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

Các phần tử chung theo hàng trong hai đường chéo của ma trận vuông trong C ++


Cho đầu vào là ma trận vuông 2D. Mục đích là để tìm các phần tử phổ biến trong cả hai đường chéo chính và phụ của nó. Nếu ma trận đầu vào là

1 2 3
2 2 4
1 4 7

Khi đó đường chéo chính của nó là 1 2 7 và đường chéo phụ là 3 2 1. Phần tử chung là 2.

Sẽ luôn có ít nhất một phần tử chung trong cả hai.

Ví dụ

Đầu vào - Ma trận [] [5] ={{1, 2, 1}, {4, 1, 6}, {1, 8, 1}};

Đầu ra - Các yếu tố chung theo hàng theo đường chéo:3

Giải thích - Ma trận là:

1 2 1
4 1 6
1 8 1

Đường chéo chính =1 1 1, Đường chéo phụ =1 1 1

Cả 3 giá trị đều chung. count =3

Đầu vào - Ma trận [] [5] ={{1, 4, 4, 1}, {3, 4, 4, 6}, {1, 1, 1, 4}, {1, 9, 9, 2}};

Đầu ra - Các yếu tố chung theo hàng theo đường chéo:3

Giải thích - Ma trận là:

1 4 4 1
3 4 4 6
1 1 1 4
1 9 9 2

Đường chéo chính =1 4 1 2, Đường chéo phụ =1 4 1 1

3 giá trị đầu tiên là chung. count =3

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

Trong cách tiếp cận này, trước tiên chúng ta sẽ duyệt qua hàng của ma trận vuông từ hàng 0. Đối với mỗi hàng, hãy kiểm tra xem phần tử M [i] [i] có bằng M [i] [size-i-1] hay không. Nếu có thì phần tử chung của cả hai đường chéo, số gia tăng.

  • Lấy ma trận đầu vào Ma trận [] [5].

  • Đặt kích thước của nó.

  • Hàm countElement (int mt [] [5], int size) lấy ma trận đầu vào và kích thước của nó và trả về số lượng các giá trị chung trong cả đường chéo chính và phụ.

  • Lấy số lượng ban đầu là 0.

  • Di chuyển bằng vòng lặp for từ i =0 đến i

  • Nếu mt [i] [i] ==mt [i] [size-i-1] thì số gia tăng.

  • Kết quả là cuối cùng trả về.

  • In kết quả trong main.

Ví dụ

#include <iostream>
using namespace std;
int countElement(int mt[][5], int size){
   int count = 0;
   for (int i=0;i<size;i++){
      if (mt[i][i] == mt[i][size-i-1]){
         count=count+1;
      }
   }
   return count;
}
int main(){
   int Matrix[][5] = {{1, 2, 1}, {4, 1, 6}, {1, 8, 1}};
   int size=3;
   cout<<"Row-wise common elements in diagonals:"<<countElement(Matrix, size);
   return 0;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra Kết quả sau

Row-wise common elements in diagonals:3