李凌峰


私信TA

用户名:lilingfeng0822

访问量:4016

签 名:

等  级
排  名 472
经  验 4710
参赛次数 0
文章发表 22
年  龄 0
在职情况 学生
学  校 湖北生物科技职业学院
专  业

  自我简介:

import java.util.Scanner;



public class 装箱问题 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc=new Scanner(System.in);
		int m=sc.nextInt();//容量
		int n=sc.nextInt();//物品
		int[] v=new int[n+1];
		int[][] w=new int[n+1][m+1];
		for (int i = 1; i <= n; i++) {
			v[i]=sc.nextInt();
		}
		for (int i = 1; i <= n ; i++) {//物品
			for (int j = 1; j <= m ; j++) {//背包容量
				if (v[i]<=j) {
					//w[i-1][j-v[i]]+v[i]  
					//w[i-1][j-v[i]]上个物品放进去之后 还剩下多少容量
					//w[i-1][j-v[i]]+v[i] 剩下的容量加上 当前物品的容量
					w[i][j]=Math.max(w[i-1][j], w[i-1][j-v[i]]+v[i]);
				}else {
					w[i][j]=w[i-1][j];
				}
				

			}
		}
		System.out.println(m-w[n][m]);

	}

}

解题思路:

注意事项:

参考代码:

 

0.0分

2 人评分

  评论区

Good
2021-03-18 20:13:08
  • «
  • 1
  • »