uva 10304 - Optimal Binary Search Tree

来源:互联网 发布:淘宝直销店是正品吗 编辑:程序博客网 时间:2024/05/16 02:04
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][n]);        }    }}

这个OBST其实也是算法书上的经典了,不过我都一直没看过。于是华丽丽的推不出来。。。

WA了很多次,我把sorting开了,然后忘记了我其实第0号位置是空着的。。。sorting完了就少了一个数,艹

其实不开sorting也就过去了, 只能说是题目数据给的按顺序的。如果他给的数据3 15 20 5这样的数据,不sorting是过不去的。

但是其实是要有序的数字才能满足二叉树的特性