Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++의 주어진 행렬에서 A[i][j] =0인 인덱스(i, j)의 최대 차이


크기가 n x n인 행렬과 a[i][j] =0이라는 조건이 주어지고 작업은 a[i][ j] =0. 따라서 행렬에는 최소한 하나의 0이 있어야 함을 분명히 말할 수 있습니다.

입력

int matrix[][] = {
   {0, 1, 1},
   {0, 0, 0},
   {4, 5, 1}}

출력 − 주어진 행렬에서 A[i][j] =0인 인덱스(i, j)의 최대 차이는 -

설명 - 우리는 행렬[0][0], 행렬[1][0], 행렬[1][1] 및 행렬[1][2]에 요소 0이 있습니다. 따라서 인덱스의 최대 차이는 요소가 0인 행렬[1][0]에 있습니다. 따라서 최대 차이는 1입니다.

입력

int matrix[][] = {
   {0, 1, 1},
   {0, 2, 9},
   {4, 0, 1}}

출력 - 주어진 행렬에서 A[i][j] =0이 되는 인덱스(i, j)의 최대 차이는 -

설명 - 우리는 행렬[0][0], 행렬[1][0] 및 행렬[2][1]에 요소 0을 가지고 있습니다. 따라서 인덱스의 최대 차이는 요소 0을 갖는 matrix[1][0]과 matrix[2][1]에 있습니다. 따라서 최대 차이는 1입니다.

아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.

  • 모든 인덱스에서 적어도 하나의 1을 포함해야 하는 행렬을 입력하십시오.

  • 행과 열의 최대 크기, 즉 n x n의 크기를 정의합니다.

  • 최대 차이 값을 저장할 임시 변수를 가져옵니다.

  • 0부터 row_size

    까지 루프 시작
  • 루프 내에서 0에서 col_size

    까지 For 또 다른 루프를 시작합니다.
  • IF 행렬[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