蛇形填数
最近发现基础功下降了,于是拿了一本刘汝佳的算法入门,开始每天修炼,保持状态
/*
例如 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;
}