一个比较难的算法,求大神演绎,最好是C++或者C#语言。
遇到这个问题 有没有大神遇到过解决的 求算法
有这样一个算法 规定一个总价,然后从N本书中选择任意本书等于这个总价。不用2的N次方穷举的算法,谢谢。 1 分钟前 提问者: 审什 | 悬赏分:10 | 浏览次数:2次
问题补充:
数学上这个是组合即从CN0 CN1 CN2 ...一直到CNN一共是2的N次方个方案,从中选择等于那个总价的方案然后列出。求数据结构与算法大神演绎较好的算法,若满意,加分送上。
[解决办法]
这个问题是个组合优化问题,一般情况下,是NP-hard问题。
除穷举外,目前不存在有效算法。
用贪心算法(每次从书本中选取最贵的,且所有书本价格求和不超出总价的书,直到已经找不到可以新加入的书)~可以解出近似解。
[解决办法]
如LS所说,这是个背包问题。
从N本书中选M本,使总和等于价格P。
用dp[i]记录价格为i的解决方式个数,style[i][j]记录价格为i的第j种选择方式。
然后汇总style[p][dp[n]]就可以了。
暂时就想到了这个方法,希望对LZ有所帮助。