求一段数学运算的代码

kongxiang88 2009-07-03 01:09:01
1.从EXCEL的首列导入
2.数字个数未知
3.数字最大到1亿
4.假设第一个数字是后面任意2个或2个以上数字的和,求所有可能的数字组合
...全文
49 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
yyfhz 2010-04-17
  • 打赏
  • 举报
回复
不知道LZ到底想表达什么意思?
第一种理解是:给定一个小于1亿的数字,求它所有可能的组合
第二种理解是:给定一个小于1亿的数字,给定一个集合,求该数字在该集合中所有可能的组合
如果LZ想表达的是第一种意思,那么必须给定一些额外的限定,比方说组合元素仅限于正整数之类的,不然必然有无穷多的可能组合。

=====================================================
对于问题一,给定一个小于1亿的数字,求它所有可能的组合,并且要求组合元素均为正整数,可以映射为以下条件下的问题二
给定一个正整数a,给定一个集合B,B中包含了从1到a的所有整数,而且每一个整数的重复次数为:对于整数i,它重复的次数为a/i并向下取整。

=====================================================
对于问题二,给定一个小于1亿的数字a,给定一个集合B,求a在B中所有可能的组合。
Step1:将B中元素按照从小到大的次序依次排列,并表达为B={b[1](c[1]), b[2](c[2], ..., b[n](c[n])},这里的b[i]为每一个不同的元素值,而(c[i])则是b[i]值重复出现的次数。
简写为B={b[i](c[i])|b[i]<b[i+1], i=1,2,...,n}
Step2:构建子函数calc(value, B, startIndex):TList,用以在B的一个子集合(即只计算B'={b[i](c[i])|i>=startIndex})中计算指定的值value并返回其所有的组合。其返回值是一个列表,该列表中的每一个元素都是一颗树的根节点。内容的伪代码表示为:
var
singleSolution: TTreeNode;
laterSolutions: TList;
for i:=0 to c[startIndex] do
begin
lastValue:=value-b[startIndex]*i;
singleSolution := TTreeNode.create;
singleSolution.value := (b[startIndex], i);
if lastValue=0 then
result.add(singleSolution)
else
begin
laterSolutions:= calc(lastValue, B, startIndex+1);
if lasterSolution.count>0 then
begin
singleSolution.addChildrenNodes(laterSolutions);
result.add(singleSolution);
end ;
end ;
end ;
返回result;

Step3:在主程序中,调用solutions:= calc(a, B, 1),
if solutions.count>0 then
begin
依次遍历每一个solutions[i]树的所有路径,并输出。
end ;

=====================================================
利用该方法,需要有一个类似Delphi中的TTreenode的类来构造解决方案树。此外,需要有足够大的堆栈空间来进行递归调用。
不过,该递归调用可以使用普通的路径搜索方式,利用循环来代替
yyyyyhhhhwwww 2010-01-25
  • 打赏
  • 举报
回复
相当有难度!!!!
qq4510423 2009-07-17
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 xiaowei_001 的回复:]
要代码就多放点分吧
[/Quote]
....
xiaowei_001 2009-07-09
  • 打赏
  • 举报
回复
要代码就多放点分吧
zz1001 2009-07-06
  • 打赏
  • 举报
回复
哈希表是啥?
kongxiang88 2009-07-05
  • 打赏
  • 举报
回复
delphi..
yjytiantang 2009-07-05
  • 打赏
  • 举报
回复
关注一下。。
贝隆 2009-07-05
  • 打赏
  • 举报
回复
楼主要用什么语言实现?
kongxiang88 2009-07-05
  • 打赏
  • 举报
回复
有人能给出具体的实现代码吗
i54 2009-07-03
  • 打赏
  • 举报
回复
用哈希表
kongxiang88 2009-07-03
  • 打赏
  • 举报
回复
up
bdmh 2009-07-03
  • 打赏
  • 举报
回复
做课题的吧
Seamour 2009-07-03
  • 打赏
  • 举报
回复
做这个给钱不?

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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