Vijos 1308 埃及分數(迭代加深搜尋)

2022-08-17 01:27:21 字數 880 閱讀 8555

輸入a、b, 求a/b 可以由多少個埃及分數組成。

埃及分數是形如1/a , a是自然數的分數。

如2/3 = 1/2 + 1/6, 但埃及分數中不允許有相同的 ,如不可以2/3 = 1/3 + 1/3.

求出可以表達a/b個數最少埃及分數方案, 如果個數相同則選取最小的分數最大。

#include #define ll long long

using

namespace

std;

intmaxd;

long

long v[1234],ans[1234

];bool better(int

d)

return

false

; }}//

求滿足 1/c <= a/b 最大的1/c, 即最小的c

inline int

get_first(ll a,ll b)

//當前深度為d, 分母不能小於from, 分數之和為aa, bb

bool dfs(int d, int

from

, ll aa, ll bb)

bool ok = false;

from = max(from, get_first(aa, bb)); //

如果上一次遞迴的from不符合aa/bb最小的分母, 則取get_first(aa,bb)

for(int i = from; ; i++)

return

ok;}

intmain()

}for(int i = 0; i <= maxd; i++) printf("

%lld

", ans[i]);

}

練習1 23 練習1 30

1.練習1.23 改後的 如下 define find divisor better n a cond square a n n divides?better n a a else find divisor better n next 2 a define next 2 n if 2 n 1 n 2...

裝箱問題 vijos

有乙個箱子容量為v 正整數,o v 20000 同時有n個物品 o n 30 每個物品有乙個體積 正整數 要求從 n 個物品中,任取若千個裝入箱內,使箱子的剩餘空間為最小。第一行,乙個整數,表示箱子容量 第二行,乙個整數,表示有n個物品 接下來n行,分別表示這n個物品的各自體積。乙個整數,表示箱子剩...

vijos 積木城堡

恰似今天更了七章 我該怎麼辦 看上去好像只能瘋狂寫揹包啦 他們說周四化學通練,我好慌 描述 第一行是乙個整數n n 100 表示一共有幾座城堡。以下n行每行是一系列非負整數,用乙個空格分隔,按從下往上的順序依次給出一座城堡中所有積木的稜長。用 1結束。一座城堡中的積木不超過100塊,每塊積木的稜長不...