题意:
解法:
如果没有0,那么只需要每一行与上一行错一位即可,例如:
123
231
312
1230
2310
3120
0000
考虑如何移动0的位置,一个不明觉厉的做法:
设下标[1,n],那么令a[i][n]=a[n][i]=a[i][i],然后将a[i][i]=0即可,
有亿点难想噢.
做完之后就变成这样了:
0231
2013
3102
1320
code:
#include <bits/stdc++.h>
using namespace std;
const int maxm=2e3+5;
int a[maxm][maxm];
int n;
inline void solve(){
cin>>n;
n--;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
a[i][j]=(i+j)%n+1;
}
}
for(int i=0;i<n;i++){
a[i][n]=a[n][i]=a[i][i];
a[i][i]=0;
}
n++;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
cout<<a[i][j]<<' ';
}
cout<<endl;
}
}
signed main(){
ios::sync_with_stdio(0);cin.tie(0);
solve();
return 0;
}