首页 > 解决方案 > 解码图像的所有可能方法

问题描述

包含从“A”到“Z”的大写字母的绝密消息已使用以下映射编码为数字:

'A' -> 1 'B' -> 2 ... 'Z' -> 26 您是一名 FBI 特工,您需要确定可以解码消息的方式总数。

由于答案可能非常大,因此取模 10^9 + 7。

例子

对于 message = "123",输出应为 mapDecoding(message) = 3。

“123”可以解码为“ABC”(1 2 3)、“LC”(12 3)或“AW”(1 23),所以总路数为3。

我找到了这两个解决方案,但我无法理解其中的任何一个以及使用的方程式

int mapDecoding(String m) {
    for (var e : m.getBytes())
        k = v / 49 * 554 / (v * 10 + e) * c + (v = e) / 49 * (c = k %= 1e9 + 7);
    return k;
}
int c, v, k = 1;

第二种解决方案


int a, b = 1, c;
int mapDecoding(String m){
    for(int d : m.getBytes())
        b = 63/(c%49*9+d)*a + (c=d)/49 * (a=b%=1e9+7);
    return b;
}

任何人都可以帮忙吗?

标签: javadynamicdynamic-programming

解决方案


推荐阅读