调试自闭了!!!求救

P1040 [NOIP2003 提高组] 加分二叉树

改对了!!! 正确代码 ```cpp #include<bits/stdc++.h> using namespace std; int n,f[40][40],root[40][40]; inline int read() { int x=0; char c=getchar(); while(c<'0'||c>'9') c=getchar(); while(c>='0'&&c<='9') x=(x<<3)+(x<<1)+c-'0',c=getchar(); return x; } void print(int l,int r) { if(l>r) return ; printf("%d ",root[l][r]); print(l,root[l][r]-1); print(root[l][r]+1,r); } int main() { n=read(); for(int i=1;i<=n;i++) { f[i][i]=read(),root[i][i]=i; f[i][i-1]=1; } for(int i=2;i<=n;i++) for(int l=1;l+i-1<=n;l++) {//就是循环变量的毛病!!!老毛病了!!! int r=l+i-1; for(int k=l;k<=r;k++) if(f[l][r]<f[l][k-1]*f[k+1][r]+f[k][k]) { f[l][r]=f[l][k-1]*f[k+1][r]+f[k][k]; root[l][r]=k; } } printf("%d\n",f[1][n]); print(1,n); } ```
by MiaoZ @ 2018-12-24 22:07:17


谢谢大佬的代码,对我有很大启发
by 逆流之时 @ 2019-01-29 14:53:16


|