上一篇博文讲的是根据动态规划来解决01背包问题,下面使用其他的几种算法来继续解决01背包问题
方法一:遍历法
解题思路:将所有组合的情况遍历一遍,为了方便,将每种组合对应一个二进制数,例如:某个背包问题中有abcde五种物品,那么00001代表只放入了a,10001代表放入了a物品和e物品。则一共有2^5=32种情况,求出每种情况下的背包总价值,记录下背包总价值最大的情况,即为最后结果。
思路说明:这种方法肯定不是很好的解决办法,但是可以解决01背包问题
代码如下:
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int W = sc.nextInt();
ArrayList<String> list = new ArrayList<String>();
sc.nextLine();
for (int i = 0; i < N+1; i++) {
if(i==0)continue;
list.add(sc.nextLine().toString());
}
// 得到所有的二进制数
String[] strs = new String[(int