文章
239
粉丝
0
获赞
1140
访问
45.7k
#include<iostream>
#include<cstring>
using namespace std;
const int N=22;
int dx[4]={0,0,1,-1},dy[4]={1,-1,0,0};
int n,k;
int path[N][N];
int a[N][N];
void get(int &x,int &y,int way)
{
if(way==0)
x++;
else if(way==1)
y++;
else if(way==2)
x--;
else
y--;
}
void dfs(int x,int y,int way)
{
path[x][y]=1;
a[x][y]=++k;
if(k==n*n)
return;
int c_x=x,c_y=y;
get(x,y,way);
if(x<0||x>=n||y<0||y>=n||path[x][y]!=-1)
{
way=(way+1)%4;
get(c_x,c_y,way);
dfs(c_x,c_y,way);
}
else
dfs(x,y,way);
}
int main()
{
cin>>n;
memset(path,-1,sizeof path);
dfs(0,0,0);
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
printf("%-3d",a[i][j]);
if(j!=n-1)
printf(" ");
}
puts("");
}
return 0;
}
登录后发布评论
暂无评论,来抢沙发