/*
算法竞赛入门经典 例题7-2 埃及分数
隐式图迭代加深搜索。
关键点1: 解答树模型
第0层根
第1层节点分别为1/2,1/3,1/4,1/5 ...
第2层 (1/2)节点的子节点为 1/2+1/3, 1/2+1/4, 1/2+1/5... (1/3)的子节点为1/3+1/4, 1/3+1/5...
第3层 (1/2+1/3)节点的子节点为 1/2+1/3+1/4, 1/2+1/3+1/5...
...
关键点2: 去枝(见原书)
关键点3: 路径记录,使用stl stack保存返回路径。
*/
#include <iostream>
#include <string>
#include <cstdio>
#include <cmath>
#include <stack>
using namespace std;
const int MAX = 1000;
int a, b;
double goal; // a/b对应的double类型值
int max_lvl; // 当前搜索的最大深度
stack<int> s; // 栈用来保存返回路径
//迭代加深搜索
//lvl:当前层数, st:开始数字, sum:父节点值
int iter_deep(int lvl, int st, double sum)
{
int ok = (lvl == max_lvl);
for(int i=st; 1; i++) {
double temp = sum;
temp += 1.0/i;
if(temp + (max_lvl-lvl)*1.0/i + 1e-6 < goal) break;
if(temp - 1e-6 > goal)
算法竞赛入门经典 例题7-2 埃及分数
最新推荐文章于 2020-03-10 16:22:37 发布
本文深入探讨了算法竞赛中常见的例题7-2,重点讲解了埃及分数的相关知识,适合算法竞赛初学者掌握。
摘要由CSDN通过智能技术生成