蛇形矩阵填数

我们根据4*4矩阵找一下规律:

10 11 12  1
 9 16 13  2
 8 15 14  3
 7  6  5  4
观察可知 以右上角的一开始,可将

#include<cstdio>
using namespace std;
int main(){
int n,p,q,x=1;
scanf("%d",&n);
p=1;
q=n;
int a[n+2][n+2];
for(int m=n-1;m>0;m-=2){
for(int k=1;k<=4;k++){
if(k==1){
for(int i1=1;i1<=m;i1++){
a[p][q]=x;
p++;
x++;
}
}
if(k==3){
for(int i1=1;i1<=m;i1++){
a[p][q]=x;
p--;
x++;
}
}
if(k==2){
for(int i1=1;i1<=m;i1++){
a[p][q]=x;
q--;
x++;
}
}
if(k==4){
for(int i1=1;i1<=m;i1++){
a[p][q]=x;
q++;
x++;
}
q--;
p++;
}
}
}
if(n%2==1){
a[(n/2)+1][(n/2)+1]=x;
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
printf("%3d",a[i][j]);
}
printf("\n");
}
}

猜你喜欢

转载自www.cnblogs.com/ziyuan122625/p/12000747.html