void fill_spiral_matrix(int row, int col, int **a)
{
int start, i, j, min, cnt;
int totalnum = row * col;
int currow, curcol;
min = row < col ? row : col;
cnt = min / 2;
for (i = 0; i < cnt; i++) {
currow = row - 1 - i;
curcol = col - 1 - i;
start = 1 + totalnum - (row - 2 * i) * (col - 2 * i);/* start是第i圈的第一個數字 */
for (j = i; j < curcol; j++) a[i][j] = start++;
for (j = i; j < currow; j++) a[j][curcol] = start++;
for (j = curcol; j > i; j--) a[currow][j] = start++;
for (j = currow; j > i; j--) a[j][i] = start++;
}
if (min % 2 == 1) {
if (row <= col) {
for (j = i; j < col - cnt; j++) a[i][j] = start++;
} else {
for (j = i; j < row - cnt; j++) a[j][i] = start++;
}
}
}
構造螺旋矩陣
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.