25/10/5/1 上贪心和最优一样吗

找 63,一边用贪心,一边用穷举出的最优解。运行下面这段程序: def greedy(cs, t): n = 0 for c in cs: while t >= c: t -=

开始练习 →

⚠️ 换成 4/3/1 呢

面值换成 4、3、1,要找 6。运行同样的程序: def greedy(cs, t): n = 0 for c in cs: while t >= c: t -= c

开始练习 →

写一个最优找零

补全 best:算出凑够 t 最少要几枚(不用贪心,把每个金额都算一遍)。 面值 4、3、1,找 6,输出最少枚数。

开始练习 →

⚠️ 两组面值各对拍一次

把贪心和最优在两组面值上各比一次:25/10/5/1 找 63、4/3/1 找 6。 一样输出 一致,不一样输出 不一致,两个结论用 / 拼起来(25/10/5/1 那组在前)。

开始练习 →

⚠️ 贪心在多少个金额上会输

面值 4、3、1,把金额从 1 试到 20,数出有几个金额贪心比最优多用了枚数。

开始练习 →

为什么要花力气找反例

与其证明一个贪心是对的,先找反例,是因为【0】。

开始练习 →

反例应该做多大

构造反例的时候,应该【0】。

开始练习 →

反例通常藏在哪儿

构造反例的思路是【0】。

开始练习 →

挑最短的会,反而排得少

三场会 [(0,4),(3,5),(4,8)],一边按时长最短挑,一边按结束最早挑。运行下面这段程序: def sched(iv, key): end = -1 n = 0 for s, e in sorted(iv

开始练习 →

最小的反例金额是多少

面值 4、3、1,金额从 1 往上试,找第一个贪心比最优多花枚数的金额。运行下面这段程序: def greedy(cs, t): n = 0 for c in cs: while t >= c:

开始练习 →