題目描述
某一天,zzq正在上資料結構課。老師在講台上面講著二叉樹,zzq在下面發著呆。
突然zzq想到乙個問題:對於乙個n個節點,m個葉子的二叉樹,有多少種形態吶?你能告訴他嗎?
對於第一組樣例的解釋
輸入描述:
每一組輸入一行,兩個正整數n,m(n<=50)意義如題目
輸出描述:
每一行輸出乙個數,表示相應詢問的答案取模1000000007
示例1輸入
複製4 2
10 5
輸出複製
6252
備註:a取模b等於a%b,即a除以b的餘數
一開始以為是遞推的題目,後來發現是動態規劃。
可能對於動態規劃真的不知道怎麼想,一道2星的題目就要想很久。。
我們用dp[x][y]代表著x個結點有y個葉子節點的所有情況。
對於x個結點有y個葉子節點的這種情況,我們可以拿出乙個結點來, 然後在左右列舉。再把結果累加到dp[x][y]上。
狀態轉移方程:dp[i][j]=(dp[i][j]+dp[i-x-1][j-y]*dp[x][y]%mod)%mod;
**如下:
#include
#define ll long long
#define mod 1000000007
using
namespace std;
const
int maxx=51;
ll dp[maxx]
[maxx]
;int n,m;
inline
void
init()
}}}}
intmain()
}
努力加油a啊,(o)/~ 一起來數二叉樹吧
某一天,zzq正在上資料結構課。老師在講台上面講著二叉樹,zzq在下面發著呆。突然zzq想到乙個問題 對於乙個n個節點,m個葉子的二叉樹,有多少種形態吶?你能告訴他嗎?對於第一組樣例的解釋 每一組輸入一行,兩個正整數n,m n 50 意義如題目每一行輸出乙個數,表示相應詢問的答案取模10000000...
牛客13593 大家一起來數二叉樹吧 簡單dp
某一天,zzq正在上資料結構課。老師在講台上面講著二叉樹,zzq在下面發著呆。突然zzq想到乙個問題 對於乙個n個節點,m個葉子的二叉樹,有多少種形態吶?你能告訴他嗎?對於第一組樣例的解釋 每一組輸入一行,兩個正整數n,m n 50 意義如題目 每一行輸出乙個數,表示相應詢問的答案取模1000000...
牛客網 二叉樹
如上所示,由正整數1,2,3 組成了一顆特殊二叉樹。我們已知這個二叉樹的最後乙個結點是n。現在的問題是,結點m所在的子樹中一共包括多少個結點。比如,n 12,m 3那麼上圖中的結點13,14,15以及後面的結點都是不存在的,結點m所在子樹中包括的結點有3,6,7,12,因此結點m的所在子樹中共有4個...