給定矩陣中,滿足 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 次檢視

開啟您的職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.