uva 10304 - Optimal Binary Search Tree
2013-05-21 21:51
381 查看
import java.math.BigInteger; import java.util.*; public class Main{ public static void main (String [] args) throws Exception { Scanner scan = new Scanner(System.in); while(scan.hasNextInt()){ int n = scan.nextInt(); int arr[] = new int[n+1]; int sum[] = new int[n+1]; for(int i=1;i<=n;i++){ arr[i] = scan.nextInt(); } //Arrays.sort(arr); int dp[][] = new int[n+1][n+1]; for(int i=1;i<=n;i++){ sum[i] = arr[i]; sum[i] += sum[i-1]; Arrays.fill(dp[i], 2147483647); dp[i][i] = 0; } for(int gap = 1;gap<n;gap++){ for(int i=1;i+gap<=n;i++){ int j = i+gap; for(int k=i;k<=j;k++){ int k1 = Math.max(i, k-1); int k2 = Math.min(j, k+1); dp[i][j] = Math.min(dp[i][j],dp[i][k1]+dp[k2][j]+sum[j]-sum[i-1]-arr[k]); } } } System.out.println(dp[1] ); } } }
这个OBST其实也是算法书上的经典了,不过我都一直没看过。于是华丽丽的推不出来。。。
WA了很多次,我把sorting开了,然后忘记了我其实第0号位置是空着的。。。sorting完了就少了一个数,艹
其实不开sorting也就过去了, 只能说是题目数据给的按顺序的。如果他给的数据3 15 20 5这样的数据,不sorting是过不去的。
但是其实是要有序的数字才能满足二叉树的特性
相关文章推荐
- uva 10304 Optimal Binary Search Tree
- DP优化——四边形不等式 uva 10304 - Optimal Binary Search Tree
- uva 10304 Optimal Binary Search Tree(区间dp)
- UVa 10304 - Optimal Binary Search Tree
- UVA 10304 Optimal Binary Search Tree
- uva 10304 - Optimal Binary Search Tree(区间dp)
- UVA - 10304 Optimal Binary Search Tree
- uva 10304 Optimal Binary Search Tree
- UVA 10304 Optimal Binary Search Tree (区间dp)
- uva 10304 Optimal Binary Search Tree(dp)
- uva_10304 - Optimal Binary Search Tree(最优搜索二叉树)
- UVa 10304 - Optimal Binary Search Tree
- uva 10304 Optimal Binary Search Tree(DP)
- UVA - 10304 Optimal Binary Search Tree
- UVA 10304 - Optimal Binary Search Tree
- UVA 10304 Optimal Binary Search Tree
- uva 10304 Optimal Binary Search Tree(区间dp)
- uva 10304 - Optimal Binary Search Tree
- UVA 10304 Optimal Binary Search Tree
- Optimal Binary Search Tree - UVa 10304