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: