这实际上并不是标准的0-1背包问题,可以认为所有物品的价值都是1。而且也不是寻找最优解,而是输出所有可能的解,所以深度优先搜索(DFS)就显得格外合适。
全局区的变量会被自动置零,可以不用赋初值。
#include <cstdio>
#define MAX 100
int solution_cnt;//解方案数
int bag_capacity;//包容量
int items_cnt,w[MAX+1];//物品数量,单个物体重量
int selected_ids[MAX+1];//答案,被选择的物体id
int book[MAX+1];//标记数组,标记已经使用过的id位置
void dfs(int current_weight,int n