| ||||||||||
| 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