เราได้รับเมทริกซ์ขนาด 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