| ||||||||||
| 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 | |||||||||
scanf和cin输入的区别真的差别非常大,建议大家都使用scanf
我提交了大概10多次都不行,最后只是把输入字符串用scanf代替了cin
时间就变的很少...
贴出代码给大家参考
#include <iostream>
#include <map>
#include <string>
#include <algorithm>
using namespace std;
inline int length(char *str)
{
int length=0;
while(*(str+length) != '\0')
length++;
return length;
}
void main(void)
{
map<string,int> frequency;
string resultstr;
char *result;
char *num = (char *)malloc(100*sizeof(char));
result = (char *)malloc(9*sizeof(char));
int n;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
char c = '-';
bool jflag = false;
int j=0;
scanf("%s",num);
for(int i=0,size =length(num);i<size;i++)
{
if(*(num+i) == c)//if it is a exclude char ,omit it
;
else if((*(num+i)<='9')&&(*(num+i)>='0'))//if it is a digital number
{
*(result+j) = *(num+i);
j++;
}
else
{
if(*(num+i)>'Q')
{
*(result+j) = '0'+2+(*(num+i) - 'A'-1)/3;
j++;
}
else
{
*(result+j) = '0'+2+(*(num+i) - 'A')/3;
j++;
}
}
if(j == 3 && jflag == false)
{
*(result+j) = '-';
j++;
jflag = true;
}
}
*(result + j) = '\0';
resultstr = result;
map<string,int>::iterator it;
it = frequency.find(resultstr);
if(it == frequency.end())
{
frequency.insert(make_pair(resultstr,1));
}
else
{
it->second = it->second+1;
}
}//for_int
free(result);
bool flag = false;
for(map<string,int>::iterator cit = frequency.begin();cit!= frequency.end();cit++)
{
if(cit->second >1)
{
flag = true;
printf("%s ",cit->first.c_str());
printf("%d\n",cit->second);;
}
}//for_map
if(flag == false)
printf("No duplicates.\n");
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator