找出背包贪心的反例

场景:~/work/gr/knap.cpp 用「价值高的先拿」来装 0-1 背包。它常常对,但不是永远对。 任务:按 ~/题目.txt 给的物品件数和容量,构造一组物品,让 knap 的结果比真正的最优解小,把这组输入写进 ~/work/g

开始练习 →

修好排序准则

场景:~/work/gr/rule.cpp 算最多能排几场会,可它按开始时间排序,遇到很早开始的长会就排少了。 任务:修好比较器,让它按正确的贪心准则排序。make 编译后用 sample.txt 自测。 可操作范围:只在分给你的这台实验机

开始练习 →

找零贪心不成立就用 DP

场景:~/work/gr/coin.cpp 用「大面值优先」找零。这次的面值不是 1/5/10/25 那种,贪心会多用硬币。 任务:改写 min_coins,对每个查询金额输出真正的最少枚数(面值里一定有 1)。make 编译后用 samp

开始练习 →

回溯和贪心差在哪

回溯和贪心最根本的区别是【0】。

开始练习 →

搜索树的叶子对应什么

第 1 步:根:还什么都没定 第 2 步:第一层:1 要选、0 不选 第 3 步:第二层:第 2 个选不选 第 4 步:第三层:每条路都定完了 第 5 步:一条从根到底的路 第 6 步:底下 8 个,就是 2³ 种选法 · 1 0 1 0

开始练习 →

暴力搜索为什么慢

暴力搜索慢,是因为【0】。

开始练习 →

什么问题适合用回溯

一个问题适合用回溯,通常是因为【0】。

开始练习 →

回溯的代价是什么

用回溯要付的代价是【0】。

开始练习 →

三个数能排出几种顺序

把 1、2、3 排成一排,一共有几种排法?运行下面这段程序: #include <cstdlib> #include <iostream> #include <string> #include <v

开始练习 →

全排列每一层在做什么

第 1 步:上:正在排的位置;下:候选 第 2 步:第 1 位放 1 第 3 步:第 2 位放 2 第 4 步:第 3 位放 3 第 5 步:三位都定了:记下一个 第 6 步:退回一层,3 又能用了 第 7 步:第 2 位改放 3 1 2

开始练习 →