【闲话】
emmm学会用数组表示方向 //不懂为什么dx dy要声明4个元素qwq
【题意】
如下为规模为4的螺旋矩阵:1 12 11 10
2 13 16 9
3 14 15 8
4 5 6 7
求规模为n(n<=20)(注意:每个元素需要4个空格位, 这样的:printf("%4d",a[i][j]); )
【输入格式】
一行输入一个整数n
【输出格式】
输出n*n大小的螺旋矩阵
【输入样例】
4
【输出样例】
1 12 11 10
2 13 16 9
3 14 15 8
4 5 6 7
【代码】
#include<cstdio>
#include<cstring>
using namespace std;
const int dx[4]={1,0,-1,0};//
const int dy[4]={0,1,0,-1};//
int a[25][25];//
int main(){
int n,x,y,k,t;
memset(a,-1,sizeof(a));
scanf("%d",&n);
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
a[i][j]=0 ;
x=1,y=1,k=1,t=0;
while(k<=n*n){
a[x][y]=k;
k++;
if(a[x+dx[t]][y+dy[t]]!=0){
t++;
if(t>3) t=0;
}
x=x+dx[t];
y=y+dy[t];
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++) printf("%4d",a[x][y]);
printf("\n");
}
return 0;
}