演算法訓練 擺動序列

2021-07-27 10:25:52 字數 1206 閱讀 9225

演算法訓練 擺動序列  

時間限制:1.0s   記憶體限制:512.0mb

問題描述

如果乙個序列滿足下面的性質,我們就將它稱為擺動序列:

1. 序列中的所有數都是不大於

k的正整數;

2. 序列中至少有兩個數。

3. 序列中的數兩兩不相等;

4. 如果第

i – 1個數比第

i – 2個數大,則第

i個數比第

i – 2個數小;如果第

i – 1個數比第

i – 2個數小,則第

i個數比第

i – 2個數大。

比如,當

k = 3時,有下面幾個這樣的序列:

1 21 3

2 12 1 3

2 32 3 1

3 13 2

一共有8種,給定

k,請求出滿足上面要求的序列的個數。

輸入格式

輸入包含了乙個整數

k。(k

<=20)

輸出格式

輸出乙個整數,表示滿足要求的序列個數。

樣例輸入 3

樣例輸出 8

剛開始的時候發現是要用狀態壓縮的動態規劃做,但是對這類題目確實是沒有思路的。

然後自己就在網上找了一些**學習,發現這類似深度搜尋的感覺,先是對所以情況就是深搜+列舉,for迴圈判斷是否符合條件

**

#include #include using namespace std;

const int maxx = 22;

int book[maxx],data[maxx];

int sum,n;

void bfs(int t)

else

}if(flag == 1)

else

} }

for(int i = 1;i <= n;i++) }

return ;

}int main()

{ cin >> n;

sum=0;

bfs(0);

cout << sum <#include int main()

{ int k;

scanf("%d", &k);

printf("%d", (int)(pow(2, k) - k - 1) * 2);

return 0;

演算法訓練 擺動序列

問題描述 如果乙個序列滿足下面的性質,我們就將它稱為擺動序列 1.序列中的所有數都是不大於k的正整數 2.序列中至少有兩個數。3.序列中的數兩兩不相等 4.如果第i 1個數比第i 2個數大,則第i個數比第i 2個數小 如果第i 1個數比第i 2個數小,則第i個數比第i 2個數大。比如,當k 3時,有...

演算法訓練 擺動序列

演算法訓練 擺動序列 時間限制 1.0s 記憶體限制 512.0mb 問題描述 如果乙個序列滿足下面的性質,我們就將它稱為擺動序列 1.序列中的所有數都是不大於k的正整數 2.序列中至少有兩個數。3.序列中的數兩兩不相等 4.如果第i 1個數比第i 2個數大,則第i個數比第i 2個數小 如果第i 1...

演算法訓練 擺動序列

資源限制 時間限制 1.0s 記憶體限制 512.0mb 問題描述 如果乙個序列滿足下面的性質,我們就將它稱為擺動序列 1.序列中的所有數都是不大於k的正整數 2.序列中至少有兩個數。3.序列中的數兩兩不相等 4.如果第i 1個數比第i 2個數大,則第i個數比第i 2個數小 如果第i 1個數比第i ...