#include<iostream>
#include<string>
using namespace std;
char str1[101];
string str2;
string result;
string str[] = {".-","-...","-.-.","-..",".","..-.","--.",
"....","..",".---","-.-",".-..","--","-.",
"---",".--.","--.-",".-.","...","-",
"..-","...-",".--","-..-","-.--","--.."};
int a[101];
int n;
int len ;
void convert()
{
len = strlen(str1);
int i;
for(i = 0;i < len;i++)
{
if(str1[i] == '_')
{
str2 = str2 + "..--";
a[i] = 4;
}
else if(str1[i] == ',')
{
str2 = str2 + ".-.-";
a[i] = 4;
}
else if(str1[i] == '.')
{
str2 = str2 + "---.";
a[i] = 4;
}
else if(str1[i] == '?')
{
str2 = str2 + "----";
a[i] = 4;
}
else
{
str2 = str2 + str[str1[i] - 'A'];
a[i] = str[str1[i] - 'A'].length();
}
}
}
void dealwith()
{
int j = 0;
int i;
string s;
for(i = len - 1;i >= 0;i--)
{
if(a[i] == 4)
{
s = str2.substr(j,4);
if(s == "..--")
{
result = result + "_";
j = j+4;
}
else if(s == ".-.-")
{
result = result + ",";
j = j+4;
}
else if(s == "---.")
{
result = result + ".";
j = j+4;
}
else if(s == "----")
{
result = result + "?";
j = j+4;
}
else
{
for(int k = 0;k < 26;k++)
{
if(str[k] == s)
{
char c = k + 'A';
result = result + c;
j += 4;
}
}
}
}
else if(a[i] == 3)
{
s = str2.substr(j,3);
for(int k = 0;k < 26;k++)
{
if(str[k] == s)
{
char c = k + 'A';
result = result + c;
j += 3;
}
}
}
else if(a[i] == 2)
{
s = str2.substr(j,2);
for(int k = 0;k < 26;k++)
{
if(str[k] == s)
{
char c = k + 'A';
result = result + c;
j += 2;
}
}
}
else
{
s = str2.substr(j,1);
for(int k = 0;k < 26;k++)
{
if(str[k] == s)
{
char c = k + 'A';
result = result + c;
j += 1;
}
}
}
}
}
int main()
{
cin>>n;
int count = 1;
while(n--)
{
cin>>str1;
str2 = "";
result = "";
convert();
dealwith();
cout<<count++<<": "<<result<<endl;
}
system("pause");
return 0;
}
poj1051解题报告
最新推荐文章于 2016-07-13 21:16:29 发布