Computer >> Máy Tính >  >> Lập trình >> C ++

Hiệu số tối đa của các chỉ số (i, j) sao cho A [i] [j] =0 trong ma trận đã cho trong C ++


Chúng ta được cung cấp một ma trận có kích thước n x n và điều kiện là a [i] [j] =0 và nhiệm vụ là tính toán sự khác biệt lớn nhất của các chỉ số có [i] [ j] =0. Vì vậy, chúng ta có thể nói rõ rằng phải có ít nhất một số 0 trong ma trận.

Đầu vào

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

Đầu ra − Hiệu số tối đa của các chỉ số (i, j) sao cho A [i] [j] =0 trong ma trận đã cho là -

Giải thích - ta có phần tử 0 tại ma trận [0] [0], ma trận [1] [0], ma trận [1] [1] và ma trận [1] [2]. Vì vậy, sự khác biệt lớn nhất của các chỉ số sẽ nằm ở ma trận [1] [0] có phần tử 0. Vì vậy, sự khác biệt lớn nhất là 1.

Đầu vào

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

Đầu ra - Hiệu số lớn nhất của các chỉ số (i, j) sao cho A [i] [j] =0 trong ma trận đã cho là -

Giải thích - ta có phần tử 0 tại ma trận [0] [0], ma trận [1] [0] và ma trận [2] [1]. Vì vậy, sự khác biệt lớn nhất của các chỉ số sẽ nằm ở ma trận [1] [0] và ma trận [2] [1] có phần tử là 0. Vì vậy, sự khác biệt lớn nhất là 1.

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau

  • Nhập ma trận sao cho nó phải chứa ít nhất một 1 ở bất kỳ chỉ số nào.

  • Xác định kích thước tối đa của hàng và cột, tức là kích thước n x n.

  • Lấy một biến tạm thời sẽ lưu trữ giá trị chênh lệch tối đa.

  • Bắt đầu vòng lặp For từ 0 cho đến row_size

  • Bên trong vòng lặp, bắt đầu một vòng lặp khác For từ 0 cho đến col_size

  • Kiểm tra ma trận IF [i] [j] =0

  • Sau đó, đặt giá trị tối đa là giá trị lớn nhất làm chênh lệch giữa các chỉ số.

  • Trả lại giá trị tối đa

  • In kết quả.

Ví dụ

#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;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, chúng ta sẽ nhận được kết quả sau -

Maximum difference of indices with A[i][j] = 0 is: 2