实现一个算法1/2+1/3+1/4+........Hangover问题
2010-01-05 00:23
337 查看
#include <iostream> using namespace std; int Search(double Hangover[],double temp) { int i=0,j=277; if(temp<Hangover[0]) return 0; if(temp>Hangover[277]) return 277; while(i+1 != j) { if(temp<Hangover[(i+j)/2]) j = (i+j)/2; else i = (i+j)/2; } return j; } int main() { double fOverhang[278]; double sum=0; int i=0; int number; char Overhang[10]; while(i<278) { fOverhang[i]=sum; sum += 1.0/(i+2); i++; } while(scanf("%s",&Overhang)) { Overhang[4]='/0'; float temp = atof(Overhang); if(temp<0.0001) break; number = Search(fOverhang,temp); printf("%d card(s)/n",number); } return 0; }
以上是自己实现的算法,整个思路很简单,就是遇到了时间超时问题。总算解决了。。。。
相关文章推荐
- 要求顺序循环队不损失一个空间,全部能够得到有效利用,试采用设置标志位tag的方法解决“假溢出”问题,实现顺序循环队列算法
- 一个java写的贪心算法实现删数问题
- 火车运煤问题 - 增加一个简单算法实现
- 折半查找实现算法二(递归办法)PS:编译后有一个warning,但不影响结果,代码设计上应该还有些问题
- 用递归法:设计算法求解汉诺塔问题,并编程实现。 (1) Hanoi(汉诺)塔问题分析 这是一个古典的数学问题,是一个用递归方法解题的典型例子。问题是这样的:古代有一个梵塔,塔内有3个座 A,B,C
- 一个类24点问题算法实现
- 【Scala】实现一个求平方根的算法
- 算法——TOP K问题最小堆实现
- 问题:关于坛友的一个js轮播效果的实现
- thrift实现一个C++实例遇到的问题
- 深度剖析:如何实现一个 Virtual DOM 算法
- 一个简单的算法---实现找出数组中一个数字出现次数最多的数字
- 算法导论第二十五章-所有结点对的最短路径问题-Cpp代码实现
- 【高级算法】禁忌搜索算法解决3SAT问题(C++实现)
- 数据结构与算法之—两个栈实现一个队列
- 自己实现一个一致性 Hash 算法
- 最大子列和问题的四种不同时间复杂度的算法实现
- 一个简单的语义分析算法:单步算法——Python实现
- 算法导论10.1-7习题解答(用两个队列实现一个栈)
- 【LeetCode-面试算法经典-Java实现】【134-Gas Station(加油站问题)】