演算法訓練 擺動序列

2021-10-05 23:35:32 字數 1002 閱讀 3807

資源限制

時間限制: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思路:分析題目之後發現,有點像排列組合,經過試驗發現有下面規律:

2	3	4	5	6	7	8  //這一行是k的取值

2 2 //k=2的時候,只有是兩位數的可能,也就是兩個

3 6 2 //k=3的時候,有兩位數和三位數的可能,結果就是他們的和

4 12 8 2

5 20 20 10 2

6 30 40 30 12 2

7 42 70 70 42 14 2

8 56 112 140 112 56 16 2

**如下:

#includeusing namespace std;

int main()

}for(i = 2; i <= k; i++)

cout << sum << endl;

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個數小 如...

演算法訓練 擺動序列

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