蛇形填数

最近发现基础功下降了,于是拿了一本刘汝佳的算法入门,开始每天修炼,保持状态

 

/*
例如 n = 4

10 11 12 1
9 16 13 2
8 15 14 3
7 6 5 4


*/

#include <stdio.h>

#define MAX_NUM 100
int a[MAX_NUM][MAX_NUM];


int main()
{
int i, j, n, v, m;
scanf("%d", &n);

v = 0;
i = -1;
j = n - 1;
m = 0;

// 判断小于n * n, m代表第几圈,
while(v < n * n)
{
while(i < n - 1 - m && v < n * n) a[++i][j] = ++v;
while(j > m && v < n * n) a[i][--j] = ++v;
while(i > m && v < n * n) a[--i][j] = ++v;
while(j < n - 2 - m && v < n * n) a[i][++j] = ++v;
++m;
}

for(i = 0; i < n; ++i)
{
for(j = 0; j < n; ++j)
{
printf("%d\t", a[i][j]);
}
printf("\n");
}

 

return 0;
}

 

posted @ 2012-08-02 16:12  Anbit自由之路  阅读(146)  评论(0编辑  收藏  举报