问题描述
输出如样例所示的 n×n 的螺旋方阵。
输入
一个整数 n ( 0<n<10 )。
输出
一个 n 行方阵,每行 n 个数,每个数场宽为 3。
样例
输入
5
输出
1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9
编辑代码
语言 C++
代码:
#include<bits/stdc++.h>
using namespace std;
int a[105][105]={},i,j,n;
int sb(int s,int d,int x,int y){
d=d%4;
a[x][y]=s;
if(s==n*n){
return 0;
}
else{
if(d==0){
if(y+1<=n&&a[x][y+1]==0){
sb(s+1,d,x,y+1);
}
else{
sb(s+1,d+1,x+1,y);
}
}
else{
if(d==1){
if(x+1<=n&&a[x+1][y]==0){
sb(s+1,d,x+1,y);
}
else{
sb(s+1,d+1,x,y-1);
}
}
else{
if(d==2){
if(y-1>=1&&a[x][y-1]==0){
sb(s+1,d,x,y-1);
}
else{
sb(s+1,d+1,x-1,y);
}
}
else{
if(x-1>=1&&a[x-1][y]==0){
sb(s+1,d,x-1,y);
}
else{
sb(s+1,d+1,x,y+1);
}
}
}
}
}
}
int main(){
cin>>n;
sb(1,0,1,1);
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
cout<<setw(3)<<a[i][j];
}
cout<<"\n";
}
}
制作不易,记得一键三连哦!