//有排成一行的n個方格,用紅(red)、粉(pink)、綠(green)三色塗每個格仔,每格塗一色,要求任何相鄰的方格不能同色,且首尾兩格也不同色.
//求全部的滿足要求的塗法.以上就是著名的rpg難題.
假設要填第n格,那麼有兩種情況:
1.第n-1格和第一格不同顏色;
2.第n-1格和第一格相同顏色。
情況1:塗好n-1格有f(n-1)種可能。這個時候第n格只有一種可能,所以共有f(n-1)種可能。
情況2:第n格只要和第1格或者第n-1格顏色不同即可。而n-2格和第n-1格顏色一定不同,此時塗好n-2格有f(n-2)種可能。
而此時,第n格可以有兩種可能,所以有2*f(n-2)種可能。
上面兩種情況綜合起來則有:f(n)=f(n-1)+2*f(n-2);(f(2)=6;f(3)=6;)
暴力搜尋:
#include #include #include #include using namespace std;
long long ans;
int n,x[50];
void dfs(int dep)
for(int i=1; i<=3; i++)
}int main()
{ scanf("%d",&n);
ans=0;
dfs(1);
cout<
1.第n格為黑色,那麼n-1格必須為白色
2.第n格為白色,n-1格可以是白色,也可以是黑色
情況1:有f(n-1)種可能。
情況2:n-1格為黑色時,n-2格必須為白色,則有f(n-2)種可能。
遞推公式為f(n)=f(n-1)+f(n-2);f(1)=2;f(2)=3;
暴力搜尋:
#include #include #include #include #include using namespace std;
int x[10],ans,n;
void dfs(int dep)
{ if (dep>n)
{ ans++;
for(int i=1; i<=n; i++) cout<
遞推和遞迴 RPG難題
人稱 ac女之殺手 的超級偶像lele最近忽然玩起了深沉,這可急壞了眾多 cole lele的粉絲,即 可樂 經過多方打探,某資深cole終於知道了原因,原來,lele最近研究起了著名的rpg難題 有排成一行的 個方格,用紅 red 粉 pink 綠 green 三色塗每個格仔,每格塗一色,要求任何...
遞推和遞迴 RPG難題
人稱 ac女之殺手 的超級偶像lele最近忽然玩起了深沉,這可急壞了眾多 cole lele的粉絲,即 可樂 經過多方打探,某資深cole終於知道了原因,原來,lele最近研究起了著名的rpg難題 有排成一行的 個方格,用紅 red 粉 pink 綠 green 三色塗每個格仔,每格塗一色,要求任何...
RPG難題(找規律,也開看作DP)
人稱 ac女之殺手 的超級偶像lele最近忽然玩起了深沉,這可急壞了眾多 cole lele的粉絲,即 可樂 經過多方打探,某資深cole終於知道了原因,原來,lele最近研究起了著名的rpg難題 有排成一行的 個方格,用紅 red 粉 pink 綠 green 三色塗每個格仔,每格塗一色,要求任何...