เราได้รับเมทริกซ์ขนาด n x n และเงื่อนไขที่ a[i][j] =0 และภารกิจคือการคำนวณผลต่างสูงสุดของดัชนีที่มี a[i][ j] =0 ดังนั้น เราสามารถระบุได้อย่างชัดเจนว่าต้องมีศูนย์อย่างน้อยหนึ่งศูนย์ในเมทริกซ์
ป้อนข้อมูล
int matrix[][] = { {0, 1, 1}, {0, 0, 0}, {4, 5, 1}}
ผลผลิต −ผลต่างสูงสุดของดัชนี (i, j) โดยที่ A[i][j] =0 ในเมทริกซ์ที่กำหนดคือ −
คำอธิบาย − เรามีองค์ประกอบ 0 ที่เมทริกซ์[0][0], เมทริกซ์[1][0], เมทริกซ์[1][1] และเมทริกซ์[1][2] ดังนั้นความแตกต่างสูงสุดของดัชนีจะอยู่ที่เมทริกซ์[1][0] ซึ่งมีองค์ประกอบ 0 ดังนั้นความแตกต่างสูงสุดคือ 1
ป้อนข้อมูล
int matrix[][] = { {0, 1, 1}, {0, 2, 9}, {4, 0, 1}}
ผลผลิต − ผลต่างสูงสุดของดัชนี (i, j) โดยที่ A[i][j] =0 ในเมทริกซ์ที่กำหนดคือ −
คำอธิบาย − เรามีองค์ประกอบ 0 ที่ matrix[0][0], matrix[1][0] และ matrix[2][1] ดังนั้นความแตกต่างสูงสุดของดัชนีจะอยู่ที่เมทริกซ์[1][0] และเมทริกซ์[2][1] ซึ่งมีองค์ประกอบ 0 ดังนั้นความแตกต่างสูงสุดคือ 1
แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้
-
ป้อนเมทริกซ์ที่ควรมีอย่างน้อย 1 ตัวในดัชนีใด ๆ
-
กำหนดขนาดสูงสุดของแถวและคอลัมน์ เช่น ขนาด n x n
-
ใช้ตัวแปรชั่วคราวที่จะเก็บค่าความแตกต่างสูงสุด
-
เริ่มวนรอบสำหรับตั้งแต่ 0 ถึง row_size
-
ภายในลูป ให้เริ่มลูปใหม่ For จาก 0 ถึง col_size
-
ตรวจสอบ IF matrix[i][j] =0
-
จากนั้นตั้งค่าสูงสุดเป็นค่าสูงสุดเป็นส่วนต่างระหว่างดัชนี
-
ส่งคืนค่าสูงสุด
-
พิมพ์ผลลัพธ์
ตัวอย่าง
#include <bits/stdc++.h> using namespace std; #define row 3 #define col 3 //find maximum difference int maximum(int matrix[row][col]){ int max_val = 0; for (int i = 0; i < row; i++){ for (int j = 0; j < col; j++){ if (matrix[i][j] == 0){ max_val = max(max_val, abs(i - j)); } } } return max_val; } int main(){ int matrix[row][col] = { { 1, 2, 0}, { 0, 4, 0}, { 0, 1, 0}}; cout<<"Maximum difference of indices with A[i][j] = 0 is: "<<maximum(matrix); return 0; }
ผลลัพธ์
หากเราเรียกใช้โค้ดข้างต้น เราจะได้ผลลัพธ์ดังต่อไปนี้ -
Maximum difference of indices with A[i][j] = 0 is: 2