| ||||||||||
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 |
1002(487-3279)死活是WA,找到当年比赛的数据都测过了没啥问题,求解答大体思路就是将输入字串解析成7位的数字,然后转换成标准格式的字串存在map里面 #include <iostream> #include <string> #include <math.h> #include <map> using namespace std; map<string, int> statistics; void decode(char* s) { int count = 0; // 解析数字的位数,达到7位数字的时候停止 int index = 0; // 输入字串索引 int number = 0; // 解析出来的数字 while ( count < 7 ) { switch ( s[index] ) { case '0': number = number*10; count++; break; case '1': number = number*10 + 1; count++; break; case '2': case 'A': case 'B': case 'C': number = number*10 + 2; count++; break; case '3': case 'D': case 'E': case 'F': number = number*10 + 3; count++; break; case '4': case 'G': case 'H': case 'I': number = number*10 + 4; count++; break; case '5': case 'J': case 'K': case 'L': number = number*10 + 5; count++; break; case '6': case 'M': case 'N': case 'O': number = number*10 + 6; count++; break; case '7': case 'P': case 'R': case 'S': number = number*10 + 7; count++; break; case '8': case 'T': case 'U': case 'V': number = number*10 + 8; count++; break; case '9': case 'W': case 'X': case 'Y': number = number*10 + 9; count++; break; default: break; } index++; } // 转换成标准呢字符串 char buff[8] = {0}; int temp; for (int i = 0; i < 7; i++) { temp = (number/(int)pow(10.0, i))%10; buff[7-i] = (char)(temp + '0'); } for (int i = 0; i < 3; i++) { buff[i] = buff[i+1]; } buff[3] = '-'; // 插入map并且计数 string ss(buff); map<string, int>::iterator iter; iter = statistics.find(ss); if ( iter == statistics.end() ) { statistics.insert(pair<string, int>(ss, 1)); } else { (iter->second)++; } } int main(int argc, char const *argv[]) { int n; int count = 0; char buff[1000] = {0}; cin>>n; while ( count < n ) { cin>>buff; decode(buff); count++; } // 输出结果 bool output = false; if ( !statistics.empty() ) { map<string, int>::iterator iter; for (iter = statistics.begin(); iter != statistics.end(); iter++) { if ( iter->second > 1 ) { cout<<iter->first<<" "<<iter->second<<endl; output = true; } } if ( !output ) { cout<<"No duplicates."<<endl; } } else { cout<<"No duplicates."<<endl; } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator