数字串 s 需要切成若干段,每段是 1 到 26 的展品编号。这与经典“译码方案数”相同,用动态规划求解。
设 dp[i] 表示前缀 s[0..i) 的合法切分方案数,模 1000000007。
0,则可把最后一位单独成段,转移 dp[i]←dp[i]+dp[i−1]。10 到 26 之间,则可把最后两位成段,转移 dp[i]←dp[i]+dp[i−2]。市立美术馆常设展厅陈列了 26 件展品,目录编号依次为 1 到 26。巡展手册把参观顺序压成一串不含分隔符的数字字符 s,每一位都是字符 0 到 9。馆方规定:每次只能按编号领取一件展品,编号必须是 1 到 26 的正整数;不存在编号为 0 的展品,因此单独的字符 0 不能成段。现在需要把 s 从左到右切成若干段,使每一段都对应一件合法展品。
切分规则如下:
1 位数字 d,必须满足 1≤d≤9;2 位数字,其十进制值必须落在 10 到 26 之间。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册