【你们什么都知道】 excel高手或编程高手来!
整理时间:2013-05-10 07:38 来源:www.vimiy.com 作者:编辑 点击:次
【楼主】2013-05-07 22:41
» excel高手或编程高手来!
我有一列数据,比如说从第一行开始依次是11,21,31,41,52,62,72,83,93,100
我有一个固定的自然数,比如说这个自然数是84
我要从最开始的那段数列中找到任意的数字相加或相减,使结果等于84
那么,经过计算,应该是11+21+52=84,也就是说,我要找的三个数字是11,21,52
如何在excel理能够自动把11,21,52从一列数据中挖掘出来,能实现这样的功能吗?求高手答疑解惑!
网友评论2013-05-07 22:43
不知道, 楼下的来
网友评论2013-05-07 22:43
你这个是背包问题,我相信excel不会有内建函数实现的,可以用jexcel api提取数据然后用启发式算法实现
网友评论2013-05-07 22:45
Reply to Reply Post by frostfel (2013-05-07 22:43)
好像很难的样子啊
网友评论2013-05-07 22:46
Reply to Reply Post by ststone (2013-05-07 22:45)
也不是很难,是很经典的NP-complete问题,有很多现成的算法实现的,比如动态规划,看看相关资料不难理解并实现.
网友评论2013-05-07 22:52
要是我,我就把excel里的数据读出来,然后用编程语言,写算法。再将结果输出到excel里。。。我懒得研究excel里有没有这样的函数之类的东西。。这个算法也不难实现。
直接把excel当数据库操作就完事了。
我不是码农,就偶尔写点非常不专业的小程序自娱自乐一下而已。。。
网友评论2013-05-07 22:53
用遍历法?
给的数组记为a
最外的循环,i从2到n,代表参与计算的数字的数量
然后构建数组b
奇数项逐个由a到a循环,且不允许同一个元素出现两次
偶数项只有0或1,代表加或减
根据数组b进行计算,拿得到的结果与目标值比对,一致就记录在数组c中
循环完了就得到了所有可能性了...
把数组C拿出来就可以了.
Excel里有VBA的,应该可以直接搞定....
网友评论2013-05-07 22:53
ps,没看到相加或者相减,如果允许相减的话,数据量要翻倍,每个数字要存正负两次,然后尝试把他们相加得到84.
网友评论2013-05-07 22:55
喂喂..
数字很多的话
任意数量的数,任意加减...
这答案可以有好多好多好多吧
LOL罗辑思维全国人大代表真三搞笑视频柳岩
Copyright © 2012年2月8日