Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
这样做对不对??import java.util.*; import java.io.*; public class Main1738n { static int [] sum; public static void main(String [] args) throws Exception { Scanner cin=new Scanner(new FileInputStream("c:\\in.txt")); while(true) { int n=cin.nextInt(); if(n==0)break; int [] p=new int[n]; int [][] q=new int[n][n]; sum=new int[n]; for(int i=0;i<n;i++) p[i]=cin.nextInt(); sum[0]=p[0]; for(int i=1;i<n;i++) sum[i]=p[i]+sum[i-1]; int total=f(0,n-1,q,p); System.out.println(total); } } public static int f(int i,int j,int [][] q,int [] p) { if(i==j) return 0; if(i+1==j) return p[i]+p[j]; if(q[i][j]>0) return q[i][j]; int min=Integer.MAX_VALUE; for(int k=i;k<j;k++) { int tmin=f(i,k,q,p)+f(k+1,j,q,p)+sum[j]-sum[i]+p[i]; if(min>tmin) min=tmin; } return q[i][j]=min; } } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator