设 f(i) 为用若干个数(每次可取 1..i 中不超过剩余的整数)按顺序恰好凑成和为 i 的方案数。最后一步取值为 t∈[1,i] 时,前缀必须凑成 i−t。因此有纯二重循环的 DP 递推:

实现上:
本题在“每次取 1 或 2 凑成 n”与“每次取 1、2 或 3 凑成 n”的基础上进一步扩展: 给定一个非负整数 n。每次可取一个正整数,取值范围为 1 到 n,将若干个数相加恰好得到 n。两种方案只要在某个位置取的数不同,就视为不同(即顺序有区分)。求不同方案数。
记答案为 f(n)。
4
8
开通会员即可查看完整视频题解: 1.题目讲解 2.思路分析 3.逐行代码手写