이 문제에서 정수 값 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