当前位置: 首页 > news >正文

二叉树 (动态规划)

牛客测试地址:https://www.nowcoder.com/practice/aaefe5896cce4204b276e213e725f3ea

思路:

考虑使用二维动态规划来解。首先先把节点为0,高度不超过m的情况下,不难发现,方案数为1,所以我们初始化节点为0,高度从0~m的情况的方案,接下来使用动态规划遍历子树,dp[i][j] 就是所有dp[k][j-1]dp[i-k-1][j-1]的和,dp[i][j]表示节点数为i,高度不超过j的二叉树的方案数,那么它的方案数实际就是,遍历左子树的节点从0~i-1,因为父节点使用了一个节点,所以剩下的可操作的子节点只有i-1个,累加左子树方案数右子树的方案数,就是该情况的答案

题解:

#include <bits/stdc++.h>
const int N=61;
const int mod = 1e9+7;
using namespace std;
long long dp[N][N];
int main()
{int n,m;cin>>n>>m;for(int i=0;i<=m;i++)dp[0][i]=1;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){for(int k=0;k<i;k++){dp[i][j]=(dp[i][j]+dp[k][j-1]*dp[i-k-1][j-1])%mod;}}}cout<<dp[n][m]<<endl;return 0;
}
http://www.vanclimg.com/news/674.html

相关文章:

  • 1 引言(1.1 - 1.5)
  • goethereum-账户 - Charlie
  • Qt播放音频,支持进度条,设置语速,播放暂停
  • 使用监督学习训练图像聚类模型
  • java第二十八天
  • P2910 [USACO08OPEN] Clear And Present Danger S (Floyd算法)
  • 读《构建之法》:我的C/C++学习反思
  • 软工7.28
  • DE_aemmprty 题单合集(分类)
  • 《大道至简——软件工程实践者的思想》读后感
  • C++对象模型
  • 子串的故事(2) - 2025“钉耙编程”中国大学生算法设计暑期联赛(2)T4 题解
  • 【比赛记录】2025CSP-S模拟赛28
  • Apereo CAS 4.1 反序列化命令执行漏洞 (复现)
  • tt
  • 工程建立 - LI,Yi
  • Java基础语法学习 ———— Day1
  • 29
  • 第二十六天
  • 2025 -- 云智计划 -- 【CSP-S】模拟赛 #1_总结+题解
  • 习题-有限集
  • 人工智能驱动企业:通过情境感知AI重塑组织0引言
  • 亚马逊机器人如何应对交通拥堵
  • 00.01.Linux 应急响应:账号安全与入侵排查
  • 2025年7月28日
  • html重定向
  • 搜索结果太乱?5种重排序模型让你的搜索系统准确率提升40%
  • PCIe【6】SR-IOV
  • 服务器新手常见错误及网站搭建问题解析
  • Java面试见闻2025-7