public class test_7{
public static int[] arry_1=new int[]{30,35,15,5,10,20,25};
public static void main(String[] args){
int[][] arry_2=new int[7][7];
int[][] arry_3=new int[7][7];
for(int i=0;i<arry_2.length;i++)
for(int j=0;j<arry_2[i].length;j++){
arry_2[i][j]=-1;
}
System.out.println(fun_1(1,6));
System.out.println(fun_2(1,6,arry_2));
System.out.println(fun_3(1,6,arry_3));
}
public static int fun_1(int i,int j){
if(i==j)
return 0;
int u=fun_1(i+1,j)+arry_1[i-1]*arry_1[i]*arry_1[j];
for(int k=i+1;k<j;k++){
int q=fun_1(i,k)+fun_1(k+1,j)+arry_1[i-1]*arry_1[k]*arry_1[j];
if(q<u){
u=q;
}
}
return u;
}
public static int fun_2(int i,int j,int[][] arry_2){
if(arry_2[i][j] != -1)
return arry_2[i][j];
int ans = 0;
if(i==j)
ans=0;
else{
int u=fun_2(i+1,j,arry_2)+arry_1[i-1]*arry_1[i]*arry_1[j];
for(int k=i+1;k<j;k++){
int q=fun_2(i,k,arry_2)+fun_2(k+1,j,arry_2)+arry_1[i-1]*arry_1[k]*arry_1[j];
if(q<u){
u=q;
}
}
ans=u;
}
arry_2[i][j]=ans;
return arry_2[i][j];
}
public static int fun_3(int i_1,int j_1,int arry_3[][]){
for(int rec=2;rec<arry_3.length;rec++){
for(int i=1;i<arry_3.length-rec+1;i++){
int j=rec+i-1;
int u=arry_3[i+1][j]+arry_1[i-1]*arry_1[i]*arry_1[j];
for(int k=i+1;k<j;k++){
int q=arry_3[i][k]+arry_3[k+1][j]+arry_1[i-1]*arry_1[k]*arry_1[j];
if(q<u){
u=q;
}
}
arry_3[i][j]=u;
}
}
return arry_3[i_1][j_1];
}
}
03-28
1696
06-30
7万+
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交