nyoj 469 擅長排列的小明 II

2021-06-16 20:30:16 字數 736 閱讀 9690

時間限制:

1000 ms  |  記憶體限制:

65535 kb

難度:3 描述

小明十分聰明,而且十分擅長排列計算。

有一天小明心血來潮想考考你,他給了你乙個正整數n,序列1,2,3,4,5......n滿足以下情況的排列:

1、第乙個數必須是1

2、相鄰兩個數之差不大於2

你的任務是給出排列的種數。

輸入

多組資料。每組資料中輸入乙個正整數n(n<=55).

輸出輸出種數。

樣例輸入

4

樣例輸出

4
思路:
當第二個是2的時候,第2個到第n的列相當於第1到第n的排列(f(n-1),第二個為3的時候,後面可以填2和4,5,填4的話這一條就斷了(不然2就不能填了),填3的話,第3個到第n個相當於第1個到-3個(f(n-3)),填5是種特殊情況,先單調遞增到最大(等差數列),再遞減到2(也是等差數列),所以加1.
#include#include#include#includeusing namespace std;

int main()

{ int a[58],n;

a[1]=1;a[2]=1;a[3]=2;

for(int i=4;i<=56;i++)

a[i]=a[i-1]+a[i-3]+1;

while(cin>>n)

cout<

NYOJ 469 擅長排列的小明

時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 小明十分聰明,而且十分擅長排列計算。有一天小明心血來潮想考考你,他給了你乙個正整數n,序列1,2,3,4,5.n滿足以下情況的排列 1 第乙個數必須是1 2 相鄰兩個數之差不大於2 你的任務是給出排列的種數。輸入 多組資料。每組...

NYOJ 469 擅長排列的小明 II

click here 剛做這道題的時候,第一感覺用搜尋,結果超時了。然後發現題目給的資料最大是55,才回想起在杭電水題時題目資料都是20左右,下次長個記性吧。剛看了解題報告,有點明白了。學長說是dp問題,不過我不知道為什麼是dp,只是明白了他的規律。下面是規律的推導過程 為了簡便起見,我們用ai代表...

nyoj 469 擅長排列的小明 II

時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 小明十分聰明,而且十分擅長排列計算。有一天小明心血來潮想考考你,他給了你乙個正整數n,序列1,2,3,4,5.n滿足以下情況的排列 1 第乙個數必須是1 2 相鄰兩個數之差不大於2 你的任務是給出排列的種數。輸入 多組資料。每組...