(有点难以想到)查看矩阵,观察矩阵双重数组下标之间的规律
using namespace std;
#define int long long
#define endl '\n'
signed main(){
std::ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
int n;cin>>n;int a[20][20];
int r=0,c=n-1;//0-3
int num=1;
while(num<=n*n){
for(int i=r;i<=c;i++){
a[r][i]=num;
num++;
}
for(int i=r+1;i<=c;i++){
a[i][c]=num;
num++;
}
for(int i=c-1;i>=r;i--){
a[c][i]=num;
num++;
}
for(int i=c-1;i>r;i--){
a[i][r]=num;
num++;
}
r++;c--;//控制内部同上,通过r++,c--
}
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
cout<<a[i][j]<<" ";
}
cout<<endl;
}
return 0;
}