杭电acm——1982 Kaitou Kid - The Phantom Thief (1)

来源:互联网 发布:什么是网络教学 编辑:程序博客网 时间:2024/06/10 14:44

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1982

题目思路:数字“1~26”转化为“A~Z”,‘#转化为空格,‘-’忽略

这道题重点就在于数字转化为字母的过程。可以通过映射,用一个string保存字母 

 string str="AABCDEFGHIJKLMNOPQRSTUVWXYZ"

因为数字0不要转化为什么字母,所有随便定义了str[0]='A'

数字又要分成单个字符的数字和占两个字符的数字,所以要判断一下来处理

详情请看代码:

#include <iostream>#include <string>using namespace std;string str="AABCDEFGHIJKLMNOPQRSTUVWXYZ";int main(){    int n,i,x;    string s,a;    cin>>n;    getchar();    while(n--)    {        getline(cin,s);        for(i=0;i<s.length();i++)        {            if(s[i]=='-')                continue;            if(s[i]=='#')                cout<<" ";            if(s[i]>='1'&&s[i]<='9'&&(s[i+1]=='#'||s[i+1]=='-'||s[i+1]=='\0'))            {                x=(s[i]-'0');//注:s[i]是数字字符,要转换为数字要减去0字符                cout<<str[x];//映射转换为字母字符            }            if(s[i]>='1'&&s[i]<='9'&&s[i+1]>='0'&&s[i+1]<='9')            {                x=(s[i]-'0')*10+(s[i+1]-'0');                cout<<str[x];                i++;            }        }        cout<<endl;    }    return 0;}




0 0