/**
*
* @author bohu83
* @2019-06-11
*/
public class FindMaxTest {
static String[] names= {"故宫","颐和园","长城","天坛"};
static int[] w = {1,2, 3, 1 };
static int[] v = {7,8,9,6};
static int[][] b = new int[5][5];
public static void main(String[] args) {
for (int i = 1; i <= 4; i++) {
for (int j = 1; j <= 4; j++) {
if ( j< w[i] ) {
b[i][j] = b[i - 1][j];
} else {
int value1 = v[i] + b[i - 1][j - w[i]] ;
int value2 = b[i - 1][j];
b[i][j] = Math.max(value1, value2);
}
}
}
System.out.println("value:"+b[3][3]);
findMax(3,3);
}
public static void findMax(int i,int j){
if(i>0){
if(b[i][j]== b[i-1][j]){
System.out.println("not choose :"+names[i]+",value="+v[i]);
findMax(i-1,j);
}
else if( b[i][j]==(v[i] + b[i - 1][j - w[i]]) ){
System.out.println("choose :"+names[i]+",value="+v[i]);
findMax(i-1,j-w[i]);
}
}
}
}