Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
QAQ,忘了include string,又贡献一次CE。。。//============================================================================ // Name : main1051.cpp // Author : // Version : // Copyright : Your copyright notice // Description : Hello World in C++, Ansi-style //============================================================================ #include <iostream> #include <map> #include <string> using namespace std; string s[30] = {"01", "1000", "1010", "100", "0", "0010", "110", "0000", "00", "0111", "101", "0100", "11", "10", "111", "0110", "1101", "010", "000", "1", "001", "0001", "011", "1001", "1011", "1100", "0011", "0101", "1110", "1111"}; map<string, int> mp; void loadMap(){ for(int i = 0; i < 30; i++){ mp.insert(pair<string, int>(s[i], i)); } } char getChar(int idx){ if(idx < 26) return (char)idx+'A'; switch(idx){ case 26: return '_'; case 27: return ','; case 28: return '.'; case 29: return '?'; } } int getIdx(char c){ if(c >= 'A' && c <= 'Z') return c-'A'; switch(c){ case '_': return 26; case ',': return 27; case '.': return 28; case '?': return 29; } } int main() { loadMap(); int cases; cin >> cases; for(int ii = 0; ii < cases; ii++){ cout << ii+1 << ": "; string code; cin >> code; string morse = ""; int len = code.length(); int num[100]; for(int i = 0; i < len; i++){ string temp = s[getIdx(code[i])]; morse += temp; num[i] = temp.length(); } int start = 0; for(int i = len-1; i >= 0; i--){ string enc = morse.substr(start, num[i]); start += num[i]; cout << getChar(mp[enc]); } cout << endl; } //cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!! return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator