某一天,zzq正在上資料結構課。老師在講台上面講著二叉樹,zzq在下面發著呆。
突然zzq想到乙個問題:對於乙個n個節點,m個葉子的二叉樹,有多少種形態吶?你能告訴他嗎?
對於第一組樣例的解釋
每一組輸入一行,兩個正整數n,m(n<=50)意義如題目
每一行輸出乙個數,表示相應詢問的答案取模1000000007n個節點,m個葉子,問有多少種形態的二叉樹
二叉樹的每一次延伸乙個節點相當於加上一棵子樹,考慮到是二叉樹,所以考慮一左一右相當於*2。所以當你需要x個節點,其中有y個葉子時候,就需要考慮x個節點y個葉子拆分後分配到左右子樹上,而且拆分後又變成了乙個子子樹,這個子子樹又有它本身多種形態,所以需要乘法。
故dp核心式子是 dp[i][j]=(dp[i][j]+dp[x][y]dp[i-x-1][j-y]%mod)%mod,
中i代表的總節點數,j代表的是總葉子數,x代表的是左子樹的節點數,y代表的是左子樹的葉子數,而i-x-1代表的右子樹的節點數(-1是取出頭節點),y-代表的是左子樹的葉子數。
#pragma gcc optimize(2)
#include
using
namespace std;
#define ll long long
#define endl "\n"
const
int mod=
1e9+7;
ll dp[55]
[55];
intmain()
一起來數二叉樹吧
某一天,zzq正在上資料結構課。老師在講台上面講著二叉樹,zzq在下面發著呆。突然zzq想到乙個問題 對於乙個n個節點,m個葉子的二叉樹,有多少種形態吶?你能告訴他嗎?對於第一組樣例的解釋 每一組輸入一行,兩個正整數n,m n 50 意義如題目每一行輸出乙個數,表示相應詢問的答案取模10000000...
大家一起來數二叉樹吧(牛客網動態規劃 組合數學)
題目描述 某一天,zzq正在上資料結構課。老師在講台上面講著二叉樹,zzq在下面發著呆。突然zzq想到乙個問題 對於乙個n個節點,m個葉子的二叉樹,有多少種形態吶?你能告訴他嗎?對於第一組樣例的解釋 輸入描述 每一組輸入一行,兩個正整數n,m n 50 意義如題目 輸出描述 每一行輸出乙個數,表示相...
7 3 大家一起來玩遊戲 (20 分
24點是一種益智遊戲,24點是把4個整數 一般是正整數 通過加減乘除以及括號運算,使最後的計算結果是24的乙個數學遊戲,24點可以考驗人的智力和數學敏感性,它能在遊戲中提高人們的心算能力。24點通常是使用撲克牌來進行遊戲的,一副牌中抽去大小王后還剩下52張 如果初練也可只用1 10這40張牌 任意抽...