#include stdioh#define MAX 100int weightMAX;int priceMAX;int yMAX = 0 ;进行递归主要方法int fint t int v t为物品个数v为背包容积 if t == 0 v = 0 当物品个数为0或背包容积为0时退出 return 0; else for int
- 增加注释,方便理解和阅读代码。
- 修改输入函数为scanf,去掉scanf_s,避免编译错误。
- 将y数组初始化放在主函数中,避免递归调用时出现问题。
- 将y数组的赋值放在递归函数的外层for循环中,避免递归调用时出现问题。
- 将递归函数f的返回值改为返回最大价值。
- 修改递归函数中的判断条件,当物品个数为0或背包容积为0时,返回0,否则返回最大价值。
- 修改递归函数中的for循环中的return语句,避免影响后续物品的选择。
修改后的代码如下:
原文地址: https://www.cveoy.top/t/topic/gjZB 著作权归作者所有。请勿转载和采集!