题库首页 › 青少年软件编程(C语言) › 题目 13462

多样解码 将一个由大写英文字母组成的字符串加密为一个数字串,可以简单地将 A ~ Z 转换为 0 ~ 25。但是这种方法带来的问题是,反向解码的结果可能是不唯一的。例如 `1213407` 既可以解码为 `BCBDEAH`,也可以解码为 `MBDEAH`、 `BCNEAH`、`BVDEAH` 或 `MNEAH`。注意 `07` 和 `7` 是有区别的,不能被解码为 `H`。 本题就请你计算一下,给定的数字串有多少种不同的解码结果。 时间限制:1000 内存限制:65536 输入 输入在一行中给出一个不超过 104 位的数字串,串非空且不包含空格。 输出 输出该数字串对应的不同解码结果的数量。这个数量可能非常巨大,你只需要输出其对 1000000007 取模后的结果。 样例输入 1213407 样例输出 5

正确答案:参考实现(C):DP解码dp[i]:s[i-1]为0则只能与前位组合;分1位(0-9)与2位(10-25)判断。dp[i]=dp[i-1](若s[i-1]!='0')+dp[i-2](若两位合法)。模1e9+7。样例1213407→5。核心:数字解码DP。

试卷来源:202503 青少年等级考试C/C++真题四级

本卷相关题目

在线做题 同科目题库