给定矩阵中,满足 A[i][j] = 0 的索引 (i, j) 的最大差值 (C++)
给定一个 n x n 的矩阵,条件是 a[i][j] = 0,任务是计算具有 a[i][j] = 0 的索引的最大差值。因此,我们可以清楚地说明矩阵中必须至少有一个零。
输入
int matrix[][] = { {0, 1, 1}, {0, 0, 0}, {4, 5, 1}}
输出 - 给定矩阵中,满足 A[i][j] = 0 的索引 (i, j) 的最大差值是 -
说明 - 我们在矩阵 matrix[0][0]、matrix[1][0]、matrix[1][1] 和 matrix[1][2] 中有元素 0。因此,索引的最大差值将在 matrix[1][0] 处,该处元素为 0。因此,最大差值为 1。
输入
int matrix[][] = { {0, 1, 1}, {0, 2, 9}, {4, 0, 1}}
输出 - 给定矩阵中,满足 A[i][j] = 0 的索引 (i, j) 的最大差值是 -
说明 - 我们在矩阵 matrix[0][0]、matrix[1][0] 和 matrix[2][1] 中有元素 0。因此,索引的最大差值将在 matrix[1][0] 和 matrix[2][1] 处,该处元素为 0。因此,最大差值为 1。
下面程序中使用的算法如下
输入矩阵,使其在任何索引处至少包含一个 1。
定义行和列的最大大小,即 n x n 的大小。
取一个临时变量,用于存储最大差值。
从 0 到 row_size 开始循环 For
在循环内,从 0 到 col_size 开始另一个循环 For
检查 IF matrix[i][j] = 0
然后将 max 值设置为索引差值的最大值。
返回 max 值
打印结果。
示例
#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
广告