你有三种硬币,分别面值 2 元、5 元和 7 元,每种硬币都有足够多。买一本书需要 27 元,则最少可以用 5 个硬币组合起来正好付清,且不需要对方找钱。
排列组合问题:先判断是否考虑顺序(排列P vs 组合C),再确定是否允许重复。乘法原理分步,加法原理分类。
区分排列(考虑顺序,$P(n,m)$)和组合(不考虑顺序,$C(n,m)$)。注意特殊元素优先处理、正难则反等计数技巧。
【考点】Backtracking|Combinatorics|Integer Partition
GESP 八级 C++ 算法模块核心考点。命题人卡住的是学生"把硬币组合问题当成普通背包"的惯性——背包装的是总价值,而这题必须同时满足"总价值=27 且总个数=5"的双重约束,这是八级区别于七级的典型门槛。