牛客13593 大家一起來數二叉樹吧 簡單dp

2021-10-08 05:13:27 字數 898 閱讀 7678

某一天,zzq正在上資料結構課。老師在講台上面講著二叉樹,zzq在下面發著呆。

突然zzq想到乙個問題:對於乙個n個節點,m個葉子的二叉樹,有多少種形態吶?你能告訴他嗎?

對於第一組樣例的解釋

每一組輸入一行,兩個正整數n,m(n<=50)意義如題目

每一行輸出乙個數,表示相應詢問的答案取模1000000007

n個節點,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張牌 任意抽...