이 문제에서 정수 값 N이 주어졌습니다. 우리의 임무는 범위(1, N 2 ) 각 행의 합 요소가 동일한 방식으로 크기가 NxN인 2D 행렬에서.
문제를 이해하기 위해 예를 들어보겠습니다.
입력 - N =4
출력 -
1 6 11 16 2 7 12 13 3 8 9 14 4 5 10 15
각 행의 요소 합은 34입니다.
이 방법을 해결하려면 각 행의 합계가 동일한 방식으로 행렬의 각 요소를 배치해야 합니다. 이를 위해 우리는 탐욕스러운 접근 방식을 사용하여 합이 같도록 올바른 요소를 제자리에 배치합니다.
이를 위해 처음에는 행렬의 모든 요소를 공급한 다음 이 공식을 사용하여 이전 행렬의 요소를 포함하는 새 행렬을 만듭니다.
resultMat[i][j] = prevMat[j][(i+j)%n]
예시
아래 코드는 우리 솔루션의 구현을 보여줍니다.
#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; } }
출력
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