设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
楼主: tanhong
打印 上一主题 下一主题

趣味找数字

[复制链接]
1#
发表于 2013-4-20 13:55:44 | 显示全部楼层
本帖最后由 伊斯特伍德 于 2013-4-20 14:05 编辑

必须用枚举法吧。
看了前面几位同学的解法,感觉算法上应该还可以再优化一下,就是:
如果把这N个数排序,然后从小到大(或者从大到小)先确定两个数字,比如:K1(代表A1),K2(代表A2)(表示最小的两个),剩下的A3至An,采用二分法查找,如果没有查到,K1K2再递增(内层是K2,外层是K1,且K2的起点是K1的后续单元格,且K2<(S-K1)/2),直到K1>=S/3
这样子算法,在超级大数据里的情况下(比如10000数据里要查找3个符合条件的记录),可以省掉很多的枚举量.



PS:VBA还是不熟悉,就不写VBA代码出来让大家见笑了.
2#
发表于 2013-4-20 14:11:45 | 显示全部楼层
判断是否相等涉及到精度的问题,这个不管用什么算法应该都是会遇上的.
只能是改成判断三个数相加和S值的接近程度,比如:误差小于0.000 000 01,这就要求被查的一组数据精度有一定的限制
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-4 19:10 , Processed in 0.085585 second(s), 24 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表