遞推訓練(基礎演算法)

2021-10-10 21:42:24 字數 1255 閱讀 3620

(題目**於杭電oj)

problem description

人稱「ac女之殺手」的超級偶像lele最近忽然玩起了深沉,這可急壞了眾多「cole」(lele的粉絲,即"可樂"),經過多方打探,某資深cole終於知道了原因,原來,lele最近研究起了著名的rpg難題:

有排成一行的n個方格,用紅(red)、粉(pink)、綠(green)三色塗每個格仔,每格塗一色,要求任何相鄰的方格不能同色,且首尾兩格也不同色.求全部的滿足要求的塗法.

以上就是著名的rpg難題.

如果你是cole,我想你一定會想盡辦法幫助lele解決這個問題的;如果不是,看在眾多漂亮的痛不欲生的cole女的面子上,你也不會袖手旁觀吧?

input

輸入資料報含多個測試例項,每個測試例項佔一行,由乙個整數n組成,(01

2sample output

3

6

思路:

類似於爬樓梯的題目,反向思維。

當n>=3時,抓住三個關鍵塊,第乙個方塊,第n個方塊,第n-1個方塊。可以由此推出兩個情況:

1.當第乙個方塊與第n-1個方塊同色時,(此前共有n-2種上色方法,也可理解為還有第n個方塊和第n-1個方塊未上色) 第n個方塊有2種顏色可選。

2.當第乙個方塊與第n-1個方塊不同色時,第n個方塊有且僅有一種顏色可選。

光說可能還是理解不了,上**。

#include

long

long

intfun

(int n)

; fang[1]

=3; fang[2]

=6; fang[3]

=6;for

(int i=

5;i<

51;i++

) fang[i]=2

*fang[i-2]

+fang[i-1]

;//兩種情況相加

return fang[n];}

intmain

(void

)return0;

}

類似的題目:

現有一字串由a,b,c三個字母組成,相鄰的字母不能相同且首尾字母不能相同,現在給出字串中字母長度為n(0

遞推訓練3

題目 於杭電oj problem description 國慶期間,省城hz剛剛舉行了一場盛大的集體婚禮,為了使婚禮進行的豐富一些,司儀臨時想出了有乙個有意思的節目,叫做 考新郎 具體的操作是這樣的 首先,給每位新娘打扮得幾乎一模一樣,並蓋上大大的紅蓋頭隨機坐成一排 然後,讓各位新郎尋找自己的新娘....

基礎演算法之遞推法

一.倒推法 例1 儲油點 每次送油到儲存點,因為每次從n 1處出發至n處時都是攜帶500公升油,往返次數越少說明花掉的油最少。int main int k,d k為儲油點位置序號,d為累計終點至當前儲油點的距離 int oil 10 dis 10 儲油點的油量和離終點的距離 int i 輔助變數 k...

基礎演算法題 迷宮(遞推)

題目鏈結 解題思路 暴力法 利用 dfs 遍歷每一條可能的路徑,將遍歷的權值和不斷取餘。不足 當 n m 取較大的情況下,所遍歷的路徑可能會暴增,出現超時的情況。遞推法 從題目上我們可以發現,最終的權值和是要對 mod 取餘的,利用這個特點,我們可以實現遞推。狀態轉移方程 dp i j k dp i...