您的位置:首页 > 运维架构

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是过不去的。

但是其实是要有序的数字才能满足二叉树的特性
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: