codeup27968 方陣填數(NOIP1995普及組第2題)
阿新 • • 發佈:2019-02-12
時空限制 1000ms/128MB
題目描述
在一個N*N的方陣中,填入1,2,……N*N個數,並要求構成如下的格式:
例如: N=5
13 14 15 16 1
12 23 24 17 2
11 22 25 18 3
10 21 20 19 4
9 8 7 6 5
例如:N=6
16 17 18 19 20 1
15 30 31 32 21 2
14 29 36 33 22 3
13 28 35 34 23 4
12 27 26 25 24 5
11 10 9 8 7 6
輸入
每個測試檔案只包含一組測試資料,每組輸入一個N(1<=N<=100)。
輸出
輸出構成的方陣。N行N列,數字之間用一個空格隔開,每行最後沒有空格。
樣例輸入
5
樣例輸出
13 14 15 16 1
12 23 24 17 2
11 22 25 18 3
10 21 20 19 4
9 8 7 6 5
程式碼
#include<iostream> using namespace std; int a[105][105]={0}; int main(){ int n,x,y,k; cin>>n; k=a[x=1][y=n]=1; while (k<n*n){ while (x+1<=n && !a[x+1][y]) a[++x][y]=++k; while (y-1>=1 && !a[x][y-1]) a[x][--y]=++k; while (x-1>=1 && !a[x-1][y]) a[--x][y]=++k; while (y+1<=n && !a[x][y+1]) a[x][++y]=++k; } for (int i=1; i<=n; i++){ for (int j=1; j<n; j++) cout<<a[i][j]<<" "; cout<<a[i][n]<<endl; } return 0; }