遞迴找數 藍橋杯第六屆校內選拔賽第4題

2021-06-29 16:36:09 字數 761 閱讀 6076

題目描述:

今有7對數字:兩個1,兩個2,兩個3,...兩個7,把它們排成一行。

要求,兩個1間有1個其它數字,兩個2間有2個其它數字,以此類推,兩個7之間有7個其它數字。如下就是乙個符合要求的排列:

17126425374635

當然,如果把它倒過來,也是符合要求的。

請你找出另一種符合要求的排列法,並且這個排列法是以74開頭的。

解題思路

本想用全排列找到符合要求的數,但是因為數字太多,發生嚴重超時。

改用dfs進行列舉可以很快找到答案。

1.數字以「74」開頭,那麼兩個7和兩個4的位置都確定了,這一步要在初始化陣列的時候做好。

2.用1-6的數字進行遞迴,超過6時返回。

3.每一次遞迴後都要將陣列的i位置和i+n+1位置變為0,因為上次遞迴已經將這兩個位置的值改變。

#include #include using namespace std;

int a[15];

bool dfs(int n)

}return false;

}int main()

{ memset(a,0,sizeof(a));

a[1]=7;

a[2]=4;

a[9]=7;

a[7]=4;

dfs(1);

for(int i=1; i<=14; i++)

cout<

第六屆藍橋杯校內選拔賽C C 高職組解題(2)

1 1 1 2 1 3 1 4 在數學上稱為調和級數。它是發散的,也就是說,只要加上足夠多的項,就可以得到任意大的數字。但是,它發散的很慢 前1項和達到 1.0 前4項和才超過 2.0 前83項的和才超過 5.0 那麼,請你計算一下,要加多少項,才能使得和達到或超過 15.0 呢?請填寫這個整數。注...

第六屆藍橋杯校內選拔賽C C 高職組解題(4)

1193是個素數,對它迴圈移位後發現 1931,9311,3119也都是素數,這樣特徵的數叫 迴圈素數。你能找出具有這樣特徵的5位數的迴圈素數嗎?當然,這樣的數字可能有很多,請寫出其中最大的乙個。注意 答案是個5位數,不要填寫任何多餘的內容。答案99371 include include inclu...

第六屆藍橋杯校內選拔賽C C 高職組解題(6)

形如 1 a 的分數稱為單位分數。可以把1分解為若干個互不相同的單位分數之和。例如 1 1 2 1 3 1 9 1 18 1 1 2 1 3 1 10 1 15 1 1 3 1 5 1 7 1 9 1 11 1 15 1 35 1 45 1 231 等等,類似這樣的分解無窮無盡。我們增加乙個約束條件...