ダイナミックプランニング(数字からアルファベットへの変換)--ビジネススープ

1482 ワード

タイトルの説明


アルファベットを数字に符号化する方法があります:'a'->1,'b->2',...,'z->26'.
次に、可能な復号結果を示す一連の数字を与えます.
 
 
 

説明を入力:

 

出力の説明:

 

例1

入力


コピー
12

しゅつりょく


コピー
2

説明

2 (”ab”  ”l”)

例2

入力


コピー
31717126241541717

しゅつりょく


コピー
192

説明

192 
#include
#include
#include
using namespace std;

int main(){
    string Input;
    cin >> Input;
    vector dp(Input.length() + 1,0);
    dp[0] = 1;
    for(int i = 0;i < Input.length();i ++){
        if(i > 0 && stoi(Input.substr(i - 1,2)) >= 10  && stoi(Input.substr(i - 1,2)) <= 26){
            if(Input[i] == '0')
            {
                dp[i + 1] += dp[i - 1];
            }
            else{
                dp[i + 1] += dp[i - 1] + dp[i];
            }
        }
        else if(Input[i] == '0'){
            cout << "0" << endl;
            return 0;
        }
        else{
            dp[i + 1] += dp[i];
        }
    }
    cout << dp[Input.length()] <