解题思路
在本题中,一个长度为 k 的 完美阶梯 是指序列 S 中的一个严格递增子序列,且其元素恰好依次为 1,2,…,k。完美阶梯的 高度 就是它的长度 k。题目要求所有完美阶梯的高度之和,结果对 109+7 取模。
问题的核心是统计每种可能的完美阶梯出现了多少次。由于完美阶梯必须是 [1,2,…,k] 的形式,我们可以通过动态规划,只在顺序扫描序列的过程中维护以每个值结尾的“前缀完美阶梯”的数量。
动态规划设计:
- 定义
dp[x] 表示子序列 [1,2,…,x] 出现的次数(即高度为 x 的完美阶梯的个数)。