1603 限高二叉排列树(计数DP)
作為游戲魔方的編寫(xiě)者和管理員,Bob在很多主存模塊中檢測(cè)游戲魔方,并且Bob從未被用戶打敗,同時(shí)他也經(jīng)常和游戲魔方作戰(zhàn)。
然而,不愉快的事情發(fā)生了,游戲《失落的洛杉磯》崩潰了,由于出現(xiàn)了一個(gè)非常可惡的病毒——“十六進(jìn)制”,它非常奇怪,并且非常喜歡玩,因此,Bob必須先和它玩,才能和別人玩。
此次“十六進(jìn)制”發(fā)明了以下游戲:Bob必須通過(guò)一些有n個(gè)節(jié)點(diǎn)的二叉搜索樹(shù),二叉搜索樹(shù)是一顆二叉樹(shù),每個(gè)節(jié)點(diǎn)有一個(gè)唯一的關(guān)鍵字。我們來(lái)說(shuō)一下二叉搜索樹(shù)的性質(zhì),以下規(guī)則在每個(gè)節(jié)點(diǎn)上都成立:每個(gè)節(jié)點(diǎn)的關(guān)鍵字都大于左子樹(shù)上的所有節(jié)點(diǎn)的關(guān)鍵字,都小于右子樹(shù)上所有節(jié)點(diǎn)的關(guān)鍵字。每個(gè)關(guān)鍵字都是從1~n的不同的正整數(shù)。每棵樹(shù)上的所有節(jié)點(diǎn)都最多有兩個(gè)子節(jié)點(diǎn),或者沒(méi)有子節(jié)點(diǎn)(在這種情況下的節(jié)點(diǎn)被稱為葉子節(jié)點(diǎn))。
在“十六進(jìn)制”的游戲中,所有的樹(shù)都是不同的,但是每棵樹(shù)的高度都不低于h。在此問(wèn)題中,“高度”指的是從根節(jié)點(diǎn)到最遠(yuǎn)的葉子節(jié)點(diǎn)的最多節(jié)點(diǎn)數(shù)(包含葉子節(jié)點(diǎn)和根節(jié)點(diǎn))。當(dāng)Bob跳過(guò)一棵樹(shù)的后,這棵樹(shù)會(huì)消失。當(dāng)所有的樹(shù)都消失了,Bob就通過(guò)了游戲魔方。他想知道在最壞的情況下,他必須跳過(guò)多少棵樹(shù),你能幫助他嗎?
Input 單組測(cè)試數(shù)據(jù) 輸入數(shù)據(jù)包含兩個(gè)以空格隔開(kāi)的正整數(shù)n和h?(1<=n<=35,1<=h<=?n)?。 Output 輸出一個(gè)整數(shù)表示問(wèn)題的答案。題目保證這個(gè)整數(shù)不超過(guò)9*10^18。 Input示例 3?2 Output示例 5//對(duì)于DP還是不夠強(qiáng)啊,想到一部分,但還是沒(méi)有找到狀態(tài)方程
按理說(shuō),性質(zhì)很容易發(fā)現(xiàn),二叉搜索樹(shù),如果根節(jié)點(diǎn)確定,那么,左右樹(shù)的節(jié)點(diǎn)數(shù)就一定了
然而我想的是dp[i][j]為根為 i ,j 高度的種數(shù),然后思索了半天,發(fā)現(xiàn)并不好dp,唉
假如 dp[i][j] 是 i 個(gè)節(jié)點(diǎn),高度小于等于 j 的個(gè)數(shù)的話,就非常好做了、、、
1 #include<bits/stdc++.h> 2 using namespace std; 3 4 #define LL long long 5 #define eps 1e-8 6 #define MX 40 7 8 int n,h; 9 LL dp[MX][MX]; 10 11 int main() 12 { 13 while (scanf("%d%d",&n,&h)!=EOF) 14 { 15 memset(dp,0,sizeof(dp)); 16 for (int i=0;i<=n;i++) 17 dp[0][i]=1; 18 for (int i=1;i<=n;i++) 19 for (int j=1;j<=n;j++) 20 for (int k=1;k<=i;k++) 21 dp[i][j]+=dp[k-1][j-1]*dp[i-k][j-1]; 22 printf("%lld\n",dp[n][n]-dp[n][h-1]); 23 } 24 return 0; 25 } View Code
?
轉(zhuǎn)載于:https://www.cnblogs.com/haoabcd2010/p/7545033.html
總結(jié)
以上是生活随笔為你收集整理的1603 限高二叉排列树(计数DP)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 科技部部长王志刚谈ChatGPT:科技发
- 下一篇: 关于测试用例的一些思考