洛谷P1040 加分二叉树题解
2024-08-20 12:50:19
dp即可
\(f[i][j]\)表示i到j的加分
相当于区间dp了
#include<cstdio>
using namespace std;
int v[50];
int f[55][55];
int root[55][55];
void print(int l,int r)
{
if(l>r)return ;
if(l==r)
{
printf("%d ",r);
return ;
}
int tmp=root[l][r];
printf("%d ",tmp);
print(l,tmp-1);
print(tmp+1,r);
}
int main()
{
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d",&v[i]);
f[i][i]=v[i];
f[i][i-1]=1;
}
for(int i=n-1;i>=1;i--)
{
for(int j=i+1;j<=n;j++)
{
for(int k=i;k<=j;k++)
{
if(f[i][j]<(f[i][k-1]*f[k+1][j]+f[k][k]))//k为根节点
{
f[i][j]=f[i][k-1]*f[k+1][j]+f[k][k];
root[i][j]=k;
}
}
}
}
printf("%d\n",f[1][n]);
print(1,n);//输出中序遍历
return 0;
}
最新文章
- Git同步原始仓库到Fork仓库中
- RabbitMQ常用命令行
- red hat关于桥接模式连不上外网或者没有IP
- Silverlight安装成功后,提示安装
- Meet Github
- expdp / impdp 用法详解
- SC.UI
- hdoj-2033
- VSC 使用Git进行版本控制
- shutdown computer in ad and ou
- linux sendEmail工具的安装使用
- LeetCode &; Q13-Roman to Integer-Easy
- 认识Modbus协议
- Log4j使用笔记:每天生成一个日志文件、按日志大小生成文件
- Golang垃圾回收机制(二)
- 阿里云 oss 上传文件,js直传,.net 签名,回调
- 二路归并算法的java实现
- Xamarin 简化的Android密钥库签名
- mysql 日期相关 CURRENT_TIMESTAMP, CURRENT_DATE, CURRENT_TIME
- Android 音视频深入 十三 OpenSL ES 制作音乐播放器,能暂停和调整音量(附源码下载)
热门文章
- webapi初学项目(增删改查),webapi增删
- 广度优先搜索(BFS)思路及算法分析
- debug 查询服务日志,用于定位服务在运行和启动过程中出现的问题
- Python接口自动化基础---token鉴权
- 混编用到 C++中数组和vector 复习下大学课本
- JavaScript的变量和常量
- a标签中target属性为“_blank”时存在安全问题
- 转 Python3 ssl模块不可用的问题
- MySQL Lock--gap before rec insert intention waiting
- Linux下环境变量设置 (转)