VBA可以在一组数据中找出一个和的几个加数吗
答案:3 悬赏:60 手机版
解决时间 2021-11-08 02:50
- 提问者网友:却不属于对方
- 2021-11-07 19:09
VBA可以在一组数据中找出一个和的几个加数吗
最佳答案
- 五星知识达人网友:轮獄道
- 2021-11-07 19:31
用规划求解的办法吧
菜单--工具--规划求解
见图(随便做了一个)
菜单--工具--规划求解
见图(随便做了一个)
全部回答
- 1楼网友:詩光轨車
- 2021-11-07 21:15
可以用循环,每两个数加 然后每三个数加 以此类推,计算机算起来还是很快的。
- 2楼网友:酒安江南
- 2021-11-07 19:45
不知道你是否喜欢编程,你这是要求组合数,就是N个数中任意的提取(1~N)个数,输出满足条件(例如和为43)的一组。
最简单的编程方法是N重循环,但是这只适合一组数编一个程序,要一个程序解决任意的数列,应该使用回溯算法,例如用下面的代码解决你的问题:
Sub xxx()
Dim a, n, m, r
a = Array(12, 15, 17, 14, 12)
r = "43="
If chk(a, LBound(a), UBound(a), 43, r) Then MsgBox r
End Sub
Function chk(ByRef a, ByVal n, ByVal m, ByVal s, ByRef r) As Boolean
Dim i, r2
chk = True
For i = n To m
If a(i) = s Then
r = r & "+" & a(i)
Exit Function
End If
If i < m And a(i) < s Then
r2 = r & "+" & a(i)
If chk(a, i + 1, m, s - a(i), r2) Then
r = r2
Exit Function
End If
End If
Next i
chk = False
End Function
程序中关键的就是那个chk函数,这个函索搜索数组a的n~m元素中和为s的数列,结果放在字符串r里面,主程序调用一次既可。
chk函数,针对数组a的n~m之间的每一个数,先判断这个数是否满足要求,再判断这个数和后面的任意一个数是否满足要求,用递归方法求解。
追问你好,我后来才看见你的回答,感觉你的回答也解决了我的疑惑,但是我已经采纳完答案了,不知怎么才能再奖励你5个财富值,以表达我对你的感谢之情呢追答关键还是你的问题解决了没有,5个财富也不值多少钱~~~追问你好,可以加下你的QQ,和你学习下VBA知识吗追答非常抱歉,我不上QQ,而且VBA也只是勉强入门。我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯