構造螺旋矩陣

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++;
		}
	}
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章