MaxCount[i]=MaxWeight/weight[i]; 穷举背包问题

package com.skex;

public class MyTest {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int MaxWeight=10;
        int[] weight=new int[]{3,4,5};
        int[] values=new int[]{4,5,6};        
        int[] MaxCount=new int[3];
        for(int i=0;i<MaxCount.length;i++){
            MaxCount[i]=MaxWeight/weight[i];
        }
        
        for(int i=0;i<=MaxCount[0];i++){
            for(int j=0;j<=MaxCount[1];j++){
                for(int k=0;k<=MaxCount[2];k++){
                    int totalWeight=weight[0]*i+weight[1]*j+weight[2]*k;
                    if(totalWeight<=MaxWeight){
                        System.out.printf("%d,%d,%d : %d\n",i,j,k, total_value(values,new int[]{i,j,k}));
                    }
                }
            }
        }
/*        
0,0,0 : 0
0,0,1 : 6
0,0,2 : 12
0,1,0 : 5
0,1,1 : 11
0,2,0 : 10
1,0,0 : 4
1,0,1 : 10
1,1,0 : 9
2,0,0 : 8
2,1,0 : 13
3,0,0 : 12
*/        
    }
    
    static int total_value(int[] values,int[] count) {
        int sum=0;
        for(int i=0;i<values.length;i++){
            sum+=values[i]*count[i];
        }
        return sum;        
    }

}

 

posted @ 2018-02-02 08:53  sky20080101  阅读(55)  评论(0)    收藏  举报