当前位置:主页>仓库管理软件> 列表

算法高手请进 找商品进销存系统

进销存软件版1楼: 问题:
有一个数值 a
另有一组数B: b1,b2,b3,b4,b5,b6,b7,.....
如果B 中有若干子集之和等于a, 求其中子集之一

2楼: 自己顶一下,各位老大来给看看 如商品进销存系统

3楼: 使用递归算法吧,算法思想如下:
1.这个子集肯定包含一个元素,也就是说对于某个特定的元素
比如b1,那么所求子集可以包含b1或者不包含b1
2.{B中有若干子集之和等于a}的结果为
令B''=B-其中任意元素 a''=a-这个元素
{B''中有若干子集之和等于a''};或者
令B''=B-B-其中任意元素 a''=a
{B''中有若干子集之和等于a''};
3.这中间有结果为true就可以返回不用求后面的了
4.出口条件为a''<0,没有找到;
a''=0找到了;a''>0,如果元素个数为0没找到,否则继续递归

4楼: 谢谢,正在研究中。。。

5楼: 非常感谢 lijun4183 兄的帮助,不过有点疑问:
如果b1 本身不符合条件,必须重新B选择任意元素,那么在b1基础上作的所有运算
全部作废,是否有更好的方法呢?能提高点速度!

6楼: 好想法,应该可以的吧。前提是B必须为集合,即B中所有元素不相同.


可以优化为如果包含b1的子集合没有找到。可以认为
{B中有若干子集之和等于a}就等于
令B''=B-b1 a''=a
{B''中有若干子集之和等于a''}

进销存软件版7楼: 这个问题有关算法的书上有,我以前上课的时候学过,不过忘了。自己去书店找点书看吧!