藍橋杯 三角螺旋陣 遞迴

2021-06-29 08:12:42 字數 1274 閱讀 6628

方陣的主對角線之上稱為「上三角」。

請你設計乙個用於填充n階方陣的上三角區域的程式。填充的規則是:使用1,2,3….的自然數列,從左上角開始,按照順時針方向螺旋填充。

例如:當n=3時,輸出:

1   2   3

6   4

5當n=4時,輸出:

1   2   3   4

9  10   5

8   6

7當n=5時,輸出:

1   2   3   4   5

12  13  14   6 

11  15   7

10   8

9程式執行時,從標準輸入獲得整數n(3~20)

程式輸出:方陣的上三角部分。

要求格式:每個資料寬度為4,右對齊。

不知道大家以前有沒有做過,反正我在學c++的時候老師曾經給我們出過,現在想起來,當時拼命背**還有點小funny了

既然涉及到遞迴,那就必須抽象出乙個「層」來,因為遞迴一般是從內層向外層後退的,不難看出,對於這道題,每一層就是乙個三角形,比如這個就是最外層

1   2   3   4   5

12             6 

11         7

10   89

然後我們需要乙個起點,如果我們把這個存到陣列中的話,不難看出,起點就是(0,0),(1,1),(2,2)這些點,因為兩個座標值總是相等,所以我們用乙個k表示,然後我們還會發現,這個三角形實際上是乙個等邊三角形,所以我們要想繪製它,還需要知道它的邊的終點n,這個n的初始值其實就是我們輸入的n,只不過在進行陣列運算的時候需要減1,那麼究竟怎麼繪製這一層呢?我們可以先繪製第一條橫邊,這個比較簡單,就從map[k][0]到map[k][n]就可以了,然後繪製那條斜邊,需要兩個變數,i,j,讓i=k+1,j=n-1,即從6的位置開始,然後i++,j--,知道i>=n,到9的位置;最後繪製那條豎邊,i從n-1開始,到k+1結束,這樣就完成了一圈三角形的繪製,下一次遞迴的時候,k=k+1,n=n-2,這個從圖上看很清楚,遞迴出口則是當k>n的時候,起點不可能比終點還大,值得注意的是需要單獨考慮n==k的情況,因為這說明只有最後乙個位置了,雖然不是三角形,但我們也需要給它填上數。

#include#include#includeusing namespace std;

int map[20][20];

int num=1;

void show(int n)

else

dfs(k+1,n-2);

}int main()

藍橋杯第二屆題目 c 三角螺旋陣

程式設計 滿分15分 方陣的主對角線之上稱為 上三角 請你設計乙個用於填充n階方陣的上三角區域的程式。填充的規則是 使用1,2,3 的自然數列,從左上角開始,按照順時針方向螺旋填充。例如 當n 3時,輸出 1 2 3 6 4當n 4時,輸出 1 2 3 4 9 10 5 8 6當n 5時,輸出 1 ...

YTU 1328 三角螺旋陣

方陣的主對角線之上稱為 上三角 請你設計乙個用於填充n階方陣的上三角區域的程式。填充的規則是 使用1,2,3 的自然數列,從左上角開始,按照順時針方向螺旋填充。程式執行時,從標準輸入獲得整數n 3 20 程式輸出 方陣的上三角部分。要求格式 每個資料寬度為4,右對齊。copy 31 2 3 6 4 ...

藍橋杯 楊輝三角

題目 楊輝三角 問題描述 楊輝三角形又稱pascal三角形,它的第i 1行是 a b i的展開式的係數。它的乙個重要性質是 三角形中的每個數字等於它兩肩上的數字相加。下面給出了楊輝三角形的前4行 11 1 1 2 1 1 3 3 1 給出n,輸出它的前n行。輸入格式 輸入包含乙個數n。輸出格式 輸出...