CF12E题解
题解思路
首先构造一个序列,他满足第二个条件:
1 2 3 4 5
2 3 4 5 1
3 4 5 1 2
4 5 1 2 3
5 1 2 3 4
然后我们把中间换成
0 2 3 4 5
2 0 4 5 1
3 4 0 1 2
4 5 1 0 3
5 1 2 3 0
然后再把变成
0 2 3 4 5 1
2 0 4 5 1 3
3 4 0 1 2 5
4 5 1 0 3 2
5 1 2 3 0 4
1 3 5 2 4 0
然后就可以了!
AC CODE:
#include
#include
using namespace std;
const int N = 1010;
int n;
int a[N][N];
int main() {
cin >> n;
for (int i = 0; i < n; ++ i)
for (int j = 0; j < n; ++ j)
a[i][j] = (i + j) % (n - 1) + 1;//处理一个对称矩阵
for (int i = 0; i < n; ++ i) {
a[i][n - 1] = a[n - 1][i] = a[i][i];//把他填在后面
a[i][i] = 0;//替换成0
}
for (int i = 0; i < n; ++ i) {
for (int j = 0; j < n; ++ j)
cout << a[i][j] << ' ';
cout << endl;
}
return 0;
}