问:一个有一点难的算法题

arch3r 2001-12-20 11:44:52
有一元素个数为400000的数组,每一元素为一个大于1000且小于200000的随机数(带两位小数),如何能求出由其中哪些元素相加能得到3856545.56这样一个数.
求最佳算法(时间复杂度优先考虑).
...全文
40 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Skywings 2002-02-22
  • 打赏
  • 举报
回复
动态规划
伪代码描述

a[400000] // 元素
f[385654556] = {1}; // f[i]==1 则表示 f[i]能够用数组中某些元素表示出来
p[385654556] = {0}; // p[i] 指向前驱接点

for i=1 to 385654556 do
begin
if f[i] then begin
for j=1 to 400000 do
begin
f[i+a[j]]=1;
p[i+a[j]]=j;
end;
end;
end;

如果f[385654556]==1,那么是可以的

下面是打印的算法
i=385654556
while i>0 do
begin
println a[p[i]];
i = i - a[p[i]];
end;
sayu_yangyou 2001-12-21
  • 打赏
  • 举报
回复
有难度,但我已经有想法了。过两天告诉你。

33,028

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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