输入一个n,实现打印生成n*n的蛇形数组,这个跟dfs搜索的思想差不多,也能实现,本文用两层循环实现
#include<stdio.h>
int main()
{
int i=0,j=-1,k,n=6,M[100][100]={0},flag=1,visited[100][100]={0};
for(k=1;k<n*n;)
{
while(j+1<n&&visited[i][j+1]==0)
{
M[i][++j]=k++;
visited[i][j]=1;
}
while(i+1<n&&visited[i+1][j]==0)
{
M[++i][j]=k++;
visited[i][j]=1;
}
while(j-1<n&&j-1>=0&&visited[i][j-1]==0)
{
M[i][--j]=k++;
visited[i][j]=1;
}
while(i-1<n&&i-1>=0&&visited[i-1][j]==0)
{
M[--i][j]=k++;
visited[i][j]=1;
}
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%d\t",M[i][j]);
printf("\n");
}
return 0;
}
运行结果: