1 0-25 AZ
// 顔の質問46:デジタル文字列に変換 // タイトル:数を考えると、私たちは、文字列を変換するために、次の規則に従ってください:0「A」を翻訳し、1ターン // 翻訳された「b」を、... ...、25が"Z"に翻訳、...、11が"L"に翻訳。デジタル変換よりもあるかもしれません。例 // 12258は"bccfi"、 "BWFI"、5つの異なる翻訳、持っている "bczi"、 "mcfi" と // "MZIを。" 翻訳を持っている数を計算するために、多数の異なる方法のための機能をプログラミングしてください。 #include < ストリング > の#include <iostreamの> 使用して名前空間STD; int型 GetTranslationCount(CONST 文字列&番号); INT GetTranslationCount(INT 数) { IF(数< ストリング to_stringに=(番号)numberInString; // 文字列に変換 戻りGetTranslationCount(numberInStringを); } int型 GetTranslationCount(CONST ストリング・ナンバー) { int型の長さ= number.length(); INT *カウント= 新しい新しい INT [長さ]; INT = COUNT 0 ; のため(int型の長さ= I - 1。 ; Iは> = 0 ;株式会社(www.i-levelmedia.com))// 右再帰的に遭遇するサブ問題の重複を避けるために開始 { COUNT = 0 。 あれば(私は長さ< - 1 ) カウント =カウント[I + 1 ]。 他の 数 = 1 ; あれば(私は長さ< - 1 ) { int型 digit1 =番号[I] - ' 0 ' 。 INT digit2 =番号[I + 1 ] - ' 0 ' 。 int型は = digit1 *変換10 + digit2を。 場合(の変換> = 10 &&に変換<= 25)// 条件が満たされている、すべての可能なため、記録時間の現在位置が { IF - (私は長さ< 2)// ビットのダイナミックプログラミング手段 COUNT + =カウント[I + 2 ;] 他の COUNT + = 1 ; } } カウント[I]を = COUNT; } COUNT =カウント[ 0 ]; //は、最初の値のカウントを返す []のカウントを削除、 リターンCOUNT; }