#include<bits/stdc++.h>
using namespace std;
int a[110][110];
int main(){
int n,len,ans = 1;
cin >> n;
if(n%2==0)len = n/2;
else len = n/2 + 1;
for(int k=0;k<len;k++){
if(k%2==0){ //顺时针进行
for(int j=k;j<n-k;j++)a[k][j] = ans++;
for(int i=k+1;i<n-k;i++)a[i][n-k-1] = ans++;
for(int j=n-k-2;j>=k;j--)a[n-k-1][j] = ans++;
for(int i=n-k-2;i>k;i--)a[i][k] = ans++ ;
}else { //逆时针进行
for(int i=k;i<n-k;i++)a[i][k] = ans++;
for(int j=k+1;j<n-k;j++) a[n-k-1][j] = ans++;
for(int i=n-k-2;i>=k;i--) a[i][n-k-1] = ans ++ ;
for(int j=n-k-2;j>k;j--) a[k][j] = ans++;
}
}
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
printf("%d ",a[i][j]);
}
cout << endl;
}
}
回旋矩阵(左右都能旋转)
最新推荐文章于 2022-11-14 16:15:25 发布