问一个有点难度的算法:

arch3r 2001-12-23 11:10:19
有一元素个数为400000的数组,每一元素为一个大于1000且小于200000的随机数(带两位小数),如何能求出由其中哪些元素相加能得到3856545.56这样一个数.
求最佳算法(时间复杂度优先考虑).
...全文
96 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
liantf 2001-12-25
  • 打赏
  • 举报
回复
是得到所有组合,还是得到其中一组就可以???
paul319 2001-12-24
  • 打赏
  • 举报
回复
数组长度没错,不过我也不知道算法啊!!!!
请教!!!
Kaye 2001-12-24
  • 打赏
  • 举报
回复
本题刻转化为查找,对每一个元素a[ i ]进行3856545.56 - a[ i ]得到一个差,然后再数组中查找这个值!这样转化后,如果数组有排序用折半查找可能可以得到较高效率!
Plotto 2001-12-24
  • 打赏
  • 举报
回复
回复人: sayu_yangyou(萨虞.扬尤) (2001-12-23 23:26:41) 得0分
c/c++当中的数组界限为1024,请注意。
****************************************************************************
太荒谬了
LLnju 2001-12-24
  • 打赏
  • 举报
回复
to sayu_yangyou:
c/c++当中的数组界限为1024,真的? 怎么我定义个 100K 大小的数组也可以啊,1024太小了吧,我定义局部变量也常用 1024 , 2048 大小的数组,一点问题都没有。
arch3r 2001-12-24
  • 打赏
  • 举报
回复
不考虑程序本身问题,只求方案,谢谢。/
Kaye 2001-12-24
  • 打赏
  • 举报
回复
基本上不排序,一般的查找400000个应该也不是太久吧,应该在可以忍受的范围内!
(耐心要求比较高)
bugn 2001-12-24
  • 打赏
  • 举报
回复
如果随机数分布较好的话,用kaye的算法,只是先对数组作hash,要巨大的空间,这样查找的复杂度就是常数级.总复杂度是o(n).
Nizvoo 2001-12-23
  • 打赏
  • 举报
回复
学到东西了。
sayu_yangyou 2001-12-23
  • 打赏
  • 举报
回复
c/c++当中的数组界限为1024,请注意。

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧