|
|
大学一年级做过的一道程序题——螺旋矩阵 |
|
|
作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站 |
/*螺旋矩阵*/ #include <stdio.h> #include <conio.h>
#define DOWN 0 #define LEFT 1 #define UP 2 #define RIGHT 3
//N*N矩阵 #define N 5
void printMatrix(int *a[], int n) { int i, j;
for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { printf("%4d", a[i][j]); } printf("\n"); } }
void spiralMatrix(int *a[], int n) { int i, j; //坐标 int count; //计数器 int k; //循环变量 int direct; //方向指示
i = 0; j = --n; count = 0; direct = DOWN; while (n > 0) { for (k = 0; k < n; k++) { a[i][j] = count++; switch (direct) { case DOWN: i++; break; case LEFT: j--; break; case UP: i--; break; case RIGHT: j++; break; } } //如果刚走过的方向为RIGHT, 步长减2, 并校正位置 if (direct == RIGHT) { i++; j--; n -= 2; } //换方向 direct = (direct + 1) % 4; } if (n == 0) { a[i][j] = count; } }
void main(void) { int m[N][N] = {0}; int *a[N]; int i;
for (i = 0; i < N; i++) { a[i] = m[i]; } spiralMatrix(a, N); printMatrix(a, N); printf("按任意键退出..."); getch(); }
|
|
相关文章:相关软件: |
|