给定矩阵中,满足 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

更新于:2020年8月14日

89 次查看

开启您的职业生涯

通过完成课程获得认证

开始学习
广告