生活随笔
收集整理的這篇文章主要介紹了
24:蛇形填充数组
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
24:蛇形填充數組
總時間限制:?
1000ms內存限制:?
65536kB描述
用數字1,2,3,4,...,n*n這n2個數蛇形填充規模為n*n的方陣。
蛇形填充方法為:
對于每一條左下-右上的斜線,從左上到右下依次編號1,2,...,2n-1;按編號從小到大的順序,將數字從小到大填入各條斜線,其中編號為奇數的從左下向右上填寫,編號為偶數的從右上到左下填寫。
比如n=4時,方陣填充為如下形式:
1??2??6??7
3??5??8??13
4??9??12 14
10 11 15 16
輸入
輸入一個不大于10的正整數n,表示方陣的行數。輸出
輸出該方陣,相鄰兩個元素之間用單個空格間隔。樣例輸入
4 樣例輸出
1 2 6 7
3 5 8 13
4 9 12 14
10 11 15 16 1 #include<iostream>
2 #include<cstdio>
3 #include<cmath>
4 #include<cstring>
5 using namespace std;
6 int tot=1;
7 int ans=2;
8 int now=1;// 1向下 2向上
9 int a[101][101];
10 int main()
11 {
12 int n;
13 cin>>n;
14 int i=1,j=2;
15 cout<<1<<" ";
16 while(tot!=n*n)
17 {
18 if(now==1)
19 {
20
21 a[i][j]=ans;
22 ans++;
23 tot++;
24 if(j==1||i==n)
25 {
26 if(j==1&&i!=n)
27 i++;
28 else j++;
29 now=2;
30 continue;
31 }
32 else
33 {
34 i++;
35 j--;
36 }
37
38 }
39 if(now==2)
40 {
41
42 a[i][j]=ans;
43 ans++;
44 tot++;
45 if(i==1||j==n)
46 {
47 if(i==1&&j!=n)
48 j++;
49 else i++;
50 now=1;
51 continue;
52 }
53 else
54 {
55 i--;
56 j++;
57 }
58 }
59 else now=1;
60 }
61 for(int i=1;i<=n;i++)
62 {
63 for(int j=1;j<=n;j++)
64 {
65 if(i==1&&j==1)continue;
66 else
67 cout<<a[i][j]<<" ";
68 }
69 cout<<endl;
70 }
71 return 0;
72 } ?
總結
以上是生活随笔為你收集整理的24:蛇形填充数组的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。