(有点难以想到)查看矩阵,观察矩阵双重数组下标之间的规律

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;
}