852 蛇形填數(二)【模擬】
阿新 • • 發佈:2019-02-19
蛇形填數(二)
時間限制:2000 ms | 記憶體限制:65535 KB 難度:3- 描述
-
1 2 3 4 5 12 13 14 6 11 15 7 10 8 9
跟蛇形填數一樣,只是填數要求按照三角形填。注意每組資料之間用空行隔開- 輸入
- 第一行有一個N,表示N組測試資料
接下來每組資料包括一個數字X,表示三角形的邊長,0< X <1000 - 輸出
- 輸出之後填好之後的圖
- 樣例輸入
-
2 5 4
- 樣例輸出
-
1 2 3 4 5 12 13 14 6 11 15 7 10 8 9 1 2 3 4 9 10 5 8 6 7
蛇形填數,簡單模擬,二維陣列來儲存,迴圈控制輸入,最後迴圈控制輸出.......
詳細過程如果不太明白,除錯看過程比較好,然後具體就需要自己敲程式碼實現了......
#include<stdio.h> #include<string.h> int n,x[1005][1005]; void slove() { int cnt=1,t=0,i,j,k; for(i=0;t<n;++i)//打表 { for(j=i;j<n-2*i;++j)//橫 { x[i][j]=cnt++; } ++t;//t控制總共迴圈的次數 for(j-=2,k=i+1;j>=i;--j,++k)//斜邊 { x[k][j]=cnt++; } ++t; for(j=k-2;j>i;--j)//豎邊 { x[j][i]=cnt++; } ++t; } for(i=0;i<n;++i)//輸出 { for(j=0;j<n-i-1;++j) { printf("%d ",x[i][j]); } printf("%d\n",x[i][j]); } } int main() { int t; scanf("%d",&t); while(t--) { scanf("%d",&n); slove(); } return 0; }