蛇形填数----《算法入门经典》

个人觉的很经典的模拟贪吃蛇的题

/*
蛇形填数思路:从(0,n-1)开始围着一个蛇形的方向+1形成一个方形
            规律:首先往下,先+1,(要判断是否>n且确保这条路没人走过)
			----------感觉 很巧 
*/

#include <cstdio>
#include <cstring>

#define maxn 20

int a[maxn][maxn];

int main(){
	int n,x,y,tot = 0;
	    scanf("%d",&n);
	    memset(a,0,sizeof(a));
	    tot = a[x=0][y = n-1] = 1;//用的很巧 
	    while(tot < n*n){
    		  while(x+1<n && !a[x+1][y]) a[++x][y] = ++tot;
    		  while(y-1>=0 && !a[x][y-1]) a[x][--y] = ++tot;
    		  while(x-1>=0 && !a[x-1][y])a[--x][y] = ++tot;
    		  while(y+1<n && !a[x][y+1]) a[x][++y]=++tot;
    	}
    	for(int i=0;i<n;i++){
	    	for(int j=0;j<n;j++)
	    	   printf("%3d",a[i][j]);
	    	printf("\n");   
	    }
	return 0;
} 

  

posted on 2014-12-02 19:43  lzm420241  阅读(270)  评论(0)    收藏  举报

导航