以下哪些算法不属于贪心算法?()
这题考的是算法思想分类。拿到题别急着背,先想每个算法的核心逻辑:是每一步都做了‘不可撤销’的贪心选择,还是通过多阶段递推来‘回头看’优化?看它有没有固定的决策顺序,有没有保存子问题的多解,就能快速区分。
学生最容易把 Floyd 误判成贪心,因为它也是‘每次取最小值’,但它的本质是动态规划:通过枚举中间点 k 逐步优化,每一步都依赖前面所有 k 的结果,没有固定的贪心选择顺序,还会‘回头看’之前的路径。另外,部分同学会纠结 Dijkstra 是否贪心,其实它每次选当前距离最小的未处理顶点做松弛,决策不可撤销,就是典型的贪心,只是它要求边权非负而已。