符号约定: 以下用 a,b,c 分别表示三种积木的高度 p,q,r,限制为高度 a 的积木上方不能直接放置高度 c 的积木。
顺序不同算不同方案,因此用线性 DP最自然。我们让:
dp[k] 表示高度为 k 的总合法方案数;有三种标准积木,高度分别为正整数 p、q、r,且三者互不相同。现在要用这些积木从底部向上逐块堆叠,搭建一座总高度恰好为 k 的塔。每次可以在塔顶放一块积木,但有一个限制规则:高度为 p 的积木上方不能直接放置高度为 r 的积木(其他任意相邻组合均允许)。
对于所有可能的目标高度 k=1,2,…,n,请你分别计算有多少种不同的搭建方案。方案按照积木从底部到顶部的顺序区分,顺序不同视为不同方案。
由于答案可能很大,请将每个结果对 10^9+7 取模后输出。
数据范围:
10^4;开通会员即可查看完整视频题解: 1.题目讲解 2.思路分析 3.逐行代码手写
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册