大家一起來數二叉樹吧(牛客網動態規劃 組合數學)

2021-09-27 08:08:06 字數 951 閱讀 8799

題目描述

某一天,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個...