package tests;
import java.util.Scanner;
import static java.lang.Math.max;
//动态规划问题--实质就是从无到有或者说最大
//首先判断能否装下当前第n个物品,如果不能,就和不装当前物品的前n-1个物品最大价值相同
//如果可以,就判断装当前物品的最大价值和不装当前物品的最大价值进行比较,目的是为了寻找最大价值
public class DynamicTest {
public static void main(String[] args) {
// Scanner scanner = new Scanner(System.in);
//分别定义一个一维数组用来存放物品的容量,编号以及价值
// int[] weight = {1,2,3,4};//物品重量
int[] weight = {2,3,4,5};//物品重量
// int[] num = {1,2,3,4};//物品编号
int[] num = {1,2,3,4};//物品编号
// int[] value = {2,1,4,6};//物品价值
int[] value = {3,4,5,6};
// int size = 4;//表示背包的最大容量
int size = 8;
int[] obj = new int[num.length + 1];//表示回溯找到的已存在物品,0表示没有,1表示有
int[][] dynamic = dynamic(num, size, weight, value);//返回规划后的数组以便回溯
for (int[] i: dynamic) {
for (int j:
动态规划背包问题-Java 代码及注释
最新推荐文章于 2023-11-10 21:56:18 发布
本文探讨如何使用Java编程解决动态规划中的背包问题。通过详细的代码和注释,解释了如何在面对特定测试数据时,确保找到最优解,即使在放入或不放入某物品不影响总价值的情况下。
摘要由CSDN通过智能技术生成