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

Đặt N ^ 2 số vào ma trận sao cho mọi hàng có tổng bằng nhau trong C ++


Trong bài toán này, chúng ta được cung cấp một giá trị nguyên N. nhiệm vụ của chúng ta là in các số trong phạm vi (1, N 2 ) trong ma trận 2D có kích thước NxN sao cho tổng các phần tử của mỗi hàng bằng nhau.

Hãy lấy một ví dụ để hiểu vấn đề,

Đầu vào - N =4

Đầu ra -

1 6 11 16
2 7 12 13
3 8  9 14
4 5 10 15

Tổng các phần tử trong mỗi hàng là 34

Để giải quyết phương pháp này, chúng ta cần đặt mỗi phần tử trong ma trận sao cho tổng trong mỗi hàng bằng nhau. Đối với điều này, chúng tôi sẽ sử dụng cách tiếp cận tham lam và từng hàng một để đặt các phần tử chính xác vào vị trí làm cho tổng bằng nhau.

Đối với điều này, ban đầu chúng tôi sẽ cung cấp tất cả các phần tử trong ma trận và sau đó tạo một ma trận mới có các phần tử của ma trận trước bằng công thức này,

resultMat[i][j] = prevMat[j][(i+j)%n]

Ví dụ

Đoạn mã dưới đây cho thấy việc triển khai giải pháp của chúng tôi,

#include<iostream>
using namespace std;
   int main(){
   int n = 4,i,j;
   cout<<"Matrix of size : "<<n<<" in which sum of elements of all rows is equal is :\n";
   int prevMat[n][n], resultMat[n][n] ;
   int c = 1;
   for (i = 0; i < n; i++) {
      for (j = 0; j < n; j++)
      prevMat[i][j] = c++;
   }
   for (i = 0; i < n; i++) {
      for (<) {
         resultMat[i][j] = prevMat[j][((i+j)%n)];
      }
   }
   for (i = 0;i<n;i++) {
      for (j=0; j<n; j++) {
         cout<<resultMat[i][j]<<"\t";
      }
      cout<<endl;
   }
}

Đầu ra

Matrix of size : 4 in which sum of elements of all rows is equal is :
1 6 11 16
2 7 12 13
3 8  9 14
4 5 10 15