问题描述; 有不同价值,不同重量的物品n件,求从这n件物品中选取一部分物品的选择方案,是选中的物品总重量不超过指定的限制重量,但是选中的物品的价值之和最大. [分析] 这个经典的问题的较高效率的方法是一般是递归和贪婪法,但是我在软件考试参考书上看到这个题目用了一个很好的算法(搜索法),是把每一种解决的可能情况转换成2进制的数来表示,我第一次看到这个方法真的很好(也许是我太菜了的原因吧,呵呵~~~~~~~~~) 大家来一起讨论一下: 程序代码: #include#includeusing namespace std;const int MAX=100;int change_base(float b[],int num){ int tempt=num/2,i=0,yushu; yushu=num%2; while(tempt!=0) { b[i]=yushu; num=tempt; tempt=num/2; yushu=num%2; i++; } b[i]=1; return i;} int main(){ int num; cout<

评论