例:在n*n方陣裡輸入1,2,3,...,n*n,要求填成蛇形。例如n=4時方陣為:
10 11 12 1
9 16 13 2
8 15 14 3
7 6 5 4
上面的方陣中,多余的空格知識為了便於觀察矩陣,不必嚴格輸出,n<=8。
解:此題需要小小地思考下:在按蛇形填充矩陣的過程中,我們注意到這個固定的過程:下、左、上、右、下、左、上、右... ...這個過程是循環的,也就是說我們找到了解決問題的規律~接下來只要模擬這個過程就可以了!
Code:
#include#include int a[10][10]; int main() { int i, j, n, count; memset(a, 0, sizeof(a)); scanf("%d", &n); count = a[i = 1][j = n] = 1;//賦初值,方向為:右->左 while(count < n*n) { while(i 1 && !a[i][j-1]) a[i][--j] = ++count;//左 while(i>1 && !a[i-1][j]) a[--i][j] = ++count;//上 while(j 在填充每個方向時,判斷下一個位置是否合適(越界或已填充)~ 運行結果: