以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 饲料配方问题 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=43647) |
||||
-- 作者:Bin -- 发布时间:2013/12/12 11:44:00 -- 在DataColChanged事件 利用Datatable.FIND 找出表指定的行计算即可.http://www.foxtable.com/help/topics/0396.htm我是没太看懂你是要怎么个计算法.
|
||||
-- 作者:Bin -- 发布时间:2013/12/12 11:46:00 -- 点击按钮计算,也可以循环所有行 利用相同的方法. FIND出另外一个表的数据,然后参与计算. |
||||
-- 作者:有点甜 -- 发布时间:2013/12/12 21:03:00 -- 看了一下,需要用到组合排列的知识,好像有一个例子,建议楼主看一下。 |
||||
-- 作者:有点甜 -- 发布时间:2013/12/13 20:49:00 -- 我说一下笨笨的思路吧。例子里有一个自定义函数,可以获取从m个数中取出n个数的所有排列。 1、比如 你的表有7行,也就是有7种物品,最后要得到100公斤,也就是100000克的混合饲料。 2、那么第一步,你就有700000个数了(1-100000,每个数7个),然后从这70万个数中取出7个; 3、得到7个数以后,判断相加是否等于100000; 4、如果等于,把这7个数分别乘以对应值,然后看得出的值,是否符合高于营养要求; 5、保存符合要求的数,或者比较出一个最大或者最小的值便可 [此贴子已经被作者于2013-12-13 20:50:50编辑过]
|
||||
-- 作者:有点甜 -- 发布时间:2013/12/14 20:10:00 -- 就是按照7楼的方法去做。 第一步,得到所有的组合; 第二步,遍历组合,取出值合计是否等于最后需要的100公斤; 第三步,计算一个组合各个营养成分的值,比较最后的标准。 因为代码较为繁琐,楼主自己编码吧。关键是得到所有的组合。
[此贴子已经被作者于2013-12-14 20:10:17编辑过]
|
||||
-- 作者:有点甜 -- 发布时间:2013/12/14 22:09:00 -- 这个算法效率不高,数越多,越慢,建议楼主先去学习一下具体的算法。我这个是穷举,很笨。 做了个例子,你把代码放到命令窗口里去运行就行了。精确到公斤,4个物料。 Dim exactValue = 100 Dim drs As List(Of DataRow) = DataTables("原料营养").Select("") Dim a(exactValue) As Integer For i As Integer = 0 To exactValue a(i) = i Next Dim b(exactValue) As Integer Functions.Execute("组合排列", a, exactValue, drs.count, b, drs.count, exactValue, drs) msgbox("比较完成,结果写在命令窗口里")
|