求一算法

liujiboy 2003-10-16 06:03:06
问题如下:
设有一个包含n个数字的数集,数集中不同元素可以相同。求存在一个子集m,m中数之和是所有子集中最接近于数s的和。打印这m个数。
比如如下数集{1,2,1,3,4,5,6},若s=1,则子集有{1}。s=2,子集有{2},{1,1}。
以次类推。
...全文
28 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
BlueSky2008 2003-10-16
  • 打赏
  • 举报
回复
子集和问题,NPC的。要是只求近似解,而不要求一定是最有解的话,可以有完全多项式时间的近似算法。
liujiboy 2003-10-16
  • 打赏
  • 举报
回复
确实是0-1背包问题可以解,谢谢,好久不用全忘啦。
Riemann 2003-10-16
  • 打赏
  • 举报
回复
注意是0-1背包问题。
Riemann 2003-10-16
  • 打赏
  • 举报
回复
实际上与背包问题等价,NPC的。
LeeMaRS 2003-10-16
  • 打赏
  • 举报
回复
zzwu,楼主的要求是“m中数之和是所有子集中最接近于数s的和”

如果只求一个集合,用动态规划应该是可以的。
liujiboy 2003-10-16
  • 打赏
  • 举报
回复
不需要精确等于,只要最接近就可以。
zzwu 2003-10-16
  • 打赏
  • 举报
回复
看你的例子是: m中数之和是精确等于s的,要这样吗?

33,006

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧