33 蛇形填數
阿新 • • 發佈:2019-01-31
蛇形填數
時間限制:3000 ms | 記憶體限制:65535 KB 難度:3- 描述
- 在n*n方陳裡填入1,2,...,n*n,要求填成蛇形。例如n=4時方陳為:
10 11 12 1
9 16 13 2
8 15 14 3
7 6 5 4
- 輸入
- 直接輸入方陳的維數,即n的值。(n<=100)
- 輸出
- 輸出結果是蛇形方陳。
- 樣例輸入
-
3
- 樣例輸出
-
7 8 1 6 9 2 5 4 3
變態的蛇形填數,噁心的迴圈控制............
很久以前就見識過這個題,只是無從下手啊,好在現在學的東西多了點,敢做了....然後開始敲程式碼,需要用個二維陣列來儲存每個值,然後雙迴圈輸出.....
第一次做這樣的題,也是無從下手,迴圈調了半天,才總算執行成功,提交 ac 了........這個題完全是迴圈控制格式的題,基本上不需要思路,唯一需要注意的是,需要多個迴圈分別控制二維陣列的填數順序,有四條邊,所以需要四個,還需要來回轉圈打表,所以外層也需要一個迴圈...............
#include<stdio.h> #include<string.h> int x[105][105]; int main() { int n,i,j,k,l,s;; while(~scanf("%d",&n)) { s=1; for(i=0;i<n;++i)//控制打的長度以及次數..... { for(j=i;j<n-i;++j)//控制 從上到下 { x[j][n-i-1]=s++; } for(j=n-i-2;j>=i;--j)//控制 從右到左 { x[n-i-1][j]=s++; } for(j=n-i-2;j>=i;--j)//控制 從下到上 { x[j][i]=s++; } for(j=i+1;j<n-i-1;++j)//控制 從左到右 { x[i][j]=s++; } } for(i=0;i<n;++i) { for(j=0;j<n-1;++j) { printf("%d ",x[i][j]); } printf("%d\n",x[i][j]); } } return 0; }