VimIy微民网,让世界倾听微民的声音! 设为首页 | 加入收藏 | 网站地图
当前位置:主页 > 大杂烩 >

【你们什么都知道】 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


    喂喂..
    数字很多的话
    任意数量的数,任意加减...
    这答案可以有好多好多好多吧
    

    
    
    

关于网站 | 网站声明 | 用户反馈 | 合作伙伴 | 联系我们
Copyright © 2012年2月8日