1

文字列型の文を入力しました。

std::string message;
std::getline(std::cin, message);

文を入力した後、ifステートメントを使用して文字列を「モールス信号」に変換しました。

int length = message.length();
for(int i = 0; i < length;i++) //to loop in the message 
{
   if(message[i] == 'A')
       cout << "-.";//and the rest for 'b','c','d'....'z'
}  

入力した文字列のモールス信号を取得してデコードするにはどうすればよいですか。例:モールス信号で「.-」の場合は「A」を表示し、メッセージの「-...」の場合は「B」を表示します。

4

1 に答える 1

8

この方法で二分木を使用します-ルートは空です(NULL)。それぞれの子供はよく文字の1つを持っています'-''。' 。このようにして、ホールモールス信号をツリーにデコードします。これで、最後にNULLの代わりに、最後に取得する必要のある文字を入力します。ツリーは次のようになります。

                                根
                               / \
                              '-''。'
                                \
                                 '。'
                                    \
                                     「A」

など。n=ツリーのサイズの場合、O(lg n)で文字を見つけることができます。

于 2012-08-11T18:36:46.763 に答える