NYOJ 469 擅長排列的小明 II

2021-08-26 18:59:16 字數 733 閱讀 8809

click here~~

剛做這道題的時候,第一感覺用搜尋,結果超時了。然後發現題目給的資料最大是55,才回想起在杭電水題時題目資料都是20左右,下次長個記性吧。

剛看了解題報告,有點明白了。 學長說是dp問題,不過我不知道為什麼是dp,只是明白了他的規律。

下面是規律的推導過程:

(為了簡便起見,我們用ai代表第i個數字)

由於a1一直是1,所以a2只能是2或3。

1.當a2=2時,從a2到an的排列(2~n)相當於從a1到an-1的排列(1~n-1)(把每個數字都加1),一共有f[n-1]種情況。

2.當a2=3時,a3可能為2,4,5。

1、當a3=2時,a4一定等於4,此時從a4到an的排列(4~n)相當於從a1到an-3的排列(把每個數字都加3),一共有f[n-3]種情況。

2、當a3=4時,不管a4取不取2,都不能形成滿足題意的排列,故此種情況不可能發生。

3、當a3=5時,排列只可能是1 ,3, 5,7,9......10,8,6,4,2,所以一共有1種情況。

綜上所述,f[n]=f[n-3]+f[n-1]+1;(n>3)

#include int main()

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

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

while(~scanf("%d",&n))

return 0;

}

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 你的任務是給出排列的種數。輸入 多組資料。每組...