给定一种规则1–A、2–B、3–C…26–Z给定一个数字的序列,判断它可以有多少种字符串组成。比如123。那么可以分为 1 2 3、12 3、1 23。三种,但是127,1 2 7、12 7两种。算法分析:(1)我们保留遍历字符的前一个字符,如果前一个字符是1,那么前一个字符即可以和遍历的字符(0除外)组合,也可以和单独成一个,那么我们总数+1.如果是2,那么遍历的字符只要小于等于6,那么那么也可以这么操作。(2)其他的情况总数不加1.1025 10 2 5 10 25整体实现代码如下: 10.#include using namespace std; int zuABCD(string str1) { int cnt = 0; char front = str1[0]; if (front == ‘1’) { cnt++; } if (front == ‘2’) { if (str1[2] >= ‘1’ && str1[2] <= ‘6’) { cnt++; } } for (int i = 1; i < str1.size(); i++) { if (front == ‘1’) { if (str1[i] >= ‘1’ && str1[i] <= ‘9’) cnt++; } else if (front == ‘2’) { if (str1[i] >= ‘1’ && str1[i] <= ‘6’) { cnt++; } } front = str1[i]; } return cnt; } int main() { string str1 = “1025”; cout << zuABCD(str1) << endl; system(“pause”); return 0; }