0-1揹包JAVA實現

public class bag0_1 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        int n;
        n=scanner.nextInt();
        int dv=scanner.nextInt();
        int[] v=new int[n];
        int[] w=new int[n];
        for(int i=0;i<n;i++){
            v[i]=scanner.nextInt();
        }
        for(int i=0;i<n;i++){
            w[i]=scanner.nextInt();
        }
        int maxv[][]=new int[n+1][dv+1];
        for(int i=0;i<=n;i++){
            for(int j=0;j<=dv;j++){
                if(i==0|| j==0){
                    maxv[i][j]=0;
                    continue;
                }
                if(j<v[i-1]) maxv[i][j]=maxv[i-1][j];
                else {
                    int add=w[i-1]+maxv[i-1][j-v[i-1]];
                    int not=maxv[i][j]=maxv[i-1][j];
                    maxv[i][j]=add>not?add:not;
                }
            }
        }
        for(int i=0;i<=n;i++){
            for(int j=0;j<=dv;j++) {
                System.out.print(maxv[i][j]+" ");
            }
            System.out.println();

        }
    }

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章