- 加分二叉树
- 2017-08-24 19:39:17 @
换了个oj试着交了一次,AC了,但是在这里是CE的
求神犇指点。。。
```c++
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int n,v;
int tre[35],rot[35][35],dp[35][35];
bool vis[35][35];
void dfs(int l,int r){
if(l>r)return ;
cout<<rot[l][r]<<' ';
dfs(l,rot[l][r]-1);
dfs(rot[l][r]+1,r);
}
int main(){
cin>>n;
for(int i=1;i<=n;++i){
cin>>tre[i];
}
for(int i=n;i>=0;--i){
for(int j=0;j<=n;++j){
if(i>j)dp[i][j]=1;
else if(i==j)dp[i][j]=tre[i],rot[i][j]=i;
else if(i<j){
for(int k=i;k<=j;++k){
int dpf=tre[k]+dp[i][k-1]*dp[k+1][j];
if(dpf>dp[i][j]){
dp[i][j]=dpf;
rot[i][j]=k;
}
}
}
}
}
cout<<dp[1][n]<<endl;
dfs(1,n);
return 0;
}
```
1 条评论
-
孙鹤鸣 (sunheming) LV 10 @ 2020-03-06 10:18:53
我也是复制一下
然后AC了(在vijos)
全对
可能你系统问题
- 1