提交时间:2024-04-11 14:27:07

运行 ID: 143008

#include <iostream> using namespace std; int n, item[1000],ans[1000],id; // item数组存储物品的重量 int s; bool search(int itemNum, int space) { if (space == 0) return true; // 终止条件 if (space < 0 || itemNum == 0) return false; // 终止条件 if (search(itemNum - 1,space -item[itemNum])) { // 装物品itemNum,尝试装物品itemNum-1,成功返回true ans[++id] = item[itemNum]; return true; } if (search(itemNum - 1,space)) { // 不装物品itemNum,尝试装物品itemNum-1,成功返回true return true; } return false; } int main() { cin >> s >> n; for (int i = 1; i <= n; i++) cin >> item[i]; if (!search(n, s)) // 返回false代表没有找到合适的方案 cout << "Failed!"; else{ for(int i = 1;i <= id;i++){ cout << ans[i] << endl; } } return 0; }