题目描述
请你构造一个 n×n 的整数矩阵。
要求,矩阵满足下列所有条件:
- 矩阵中的所有元素的取值范围为 [0,n−1]。
- 矩阵主对角线上的所有元素都为 0。主对角线是指从左上角到右下角这一斜线方向的对角线。
- 该矩阵是对称矩阵。对称矩阵是指以主对角线为对称轴,各元素对应相等的矩阵。
- 同一行上的所有元素两两不同。
- 同一列上的所有元素两两不同。
样例
输入
2
输出
1 0
0 1
思路螺旋矩阵
代码
#include <bits/stdc++.h>
using namespace std;
int n;
int a[1111][1111];
int c[4444];
int main() {
cin >> n;
int t=1;
for (int i = 1; i < n; i++) c[i] = i;
for (int i = 1; i < n; i++) {
for (int j = t; j < t + n - 1; j++){
a[i][j-t+1]=c[j];
}
t++;
c[n+t-2] = c[t-1];
}
for (int i = 1; i < n; i++){
a[i][n]=a[i][i];
a[i][i]=0;
}
for(int i = 1; i < n; i++)a[n][i] = a[i][n];
a[n][n]=0;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++){
cout << a[i][j] << " ";
}
cout << "\n";
}
return 0;
}