|
发表于 2006-12-31 19:27:41
|
显示全部楼层
我来贴一个白痴级算法。
- #include <stdio.h>
- #define N 4
- int main()
- {
- int flag = -1;
- int a[N * N] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
- int b[N][N] = {0};
- int x = 0, y = 0, t = 0;
- int has_done = 0;
- for (t = 0; t < N * N; t++) {
- printf ("x=%d,y=%d,t=%d,flag=%d\n",x,y,a[t],has_done);
- b[x][y] = a[t];
- if (!has_done && (y == 0 || x == 0 || x >= N - 1 || y >= N - 1)) {
- if (x >= N - 1) y++;
- else if (y >= N - 1) x++;
- else if (x == 0) y++;
- else if (y == 0) x++;
- flag = -1 * flag;
- has_done = 1;
- } else {
- x = x + flag;
- y = y - flag;
- has_done = 0;
- }
- }
- for (x = 0,y = 0; y < N; y ++) {
- for (x = 0; x < N; x++)
- fprintf (stdout, "%d ", b[x][y]);
- fprintf (stdout, "\n");
- }
- }
复制代码 |
|