| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2159 人关注过本帖
标题:求助:在数组中挑选指定数量的数,使其合计值等于规定值
只看楼主 加入收藏
vbfans01
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2015-7-10
结帖率:0
收藏
已结贴  问题点数:10 回复次数:3 
求助:在数组中挑选指定数量的数,使其合计值等于规定值

 问题:在数组中挑选指定数量的数,使其合计值等于规定值
例如:在50,100,125,150,200,250,315,400,630这几个数中选18个(可以重复),使它们的合计等于2050。

Dim ArrData(8)
ArrData(0) = 50
ArrData(1) = 100
ArrData(2) = 125
ArrData(3) = 150
ArrData(4) = 200
ArrData(5) = 250
ArrData(6) = 315
ArrData(7) = 400
ArrData(8) = 630
2016-04-06 20:31
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4938
专家分:30047
注 册:2008-10-15
收藏
得分:5 
组合所有的排列组合的运算次数为: 39346408075296537575424   ,39万亿亿次

你去找算法吧。如果只求一个最优结果,好像可以使用贪心算法,但我不会。呵

授人于鱼,不如授人于渔
早已停用QQ了
2016-04-07 10:25
lianyicq
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:26
帖 子:737
专家分:3488
注 册:2013-1-26
收藏
得分:5 
这个问题不是最优问题.
先把问题用初等数学帮你简化一下:
两个方程解9个未知数
方程1:50a+100b+125c+150d+200e+250f+315g+400h+630i=2050
化简:10a+20b+25c+30d+40e+50f+63g+80h+126i=410
方程2:a+b+c+d+e+f+g+h+i=18
消去a有:10b+15c+20d+30e+40f+53g+70h+116i=230
自己分析,最先得到g=0,i=0
剩下10b+15c+20d+30e+40f+70h=230
2b+3c+4d+6e+8f+14h=46
这就好解了,随便试都有解。用遍历也容易
遍历时,注意每个变量的取值范围,比如e为0至46/8.

[此贴子已经被作者于2016-4-7 17:19编辑过]


大开眼界
2016-04-07 11:12
vbfans01
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2015-7-10
收藏
得分:0 
大神们能不能给一个所有的排列组合的代码。
不需要优化,也不需要管时间消耗。
2016-04-07 22:57
快速回复:求助:在数组中挑选指定数量的数,使其合计值等于规定值
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017928 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved