POJ1002,答案正确,提交出现RuntimeError,不清楚原因。
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
struct node
{
string str;
int times; //记录出现次数,避免重复输出。
int judge;
}number[10000];
bool cmp(node a,node b)
{
return a.str<b.str;
}
int main()
{
int n;
cin>>n;
for(int i=0;i<n;++i)
{
cin>>number[i].str;
}
for(int i=0;i<n;++i)
{
for(string::iterator iter=number[i].str.begin();iter!=number[i].str.end();++iter)
{
if(*iter=='A' || *iter=='B' || *iter=='C')
*iter='2';
if(*iter=='D' || *iter=='E' || *iter=='F')
*iter='3';
if(*iter=='G' || *iter=='H' || *iter=='I')
*iter='4';
if(*iter=='J' || *iter=='K' || *iter=='L')
*iter='5';
if(*iter=='M' || *iter=='N' || *iter=='O')
*iter='6';
if(*iter=='P' || *iter=='R' || *iter=='S')
*iter='7';
if(*iter=='T' || *iter=='U' || *iter=='V')
*iter='8';
if(*iter=='W' || *iter=='X' || *iter=='Y')
*iter='9';
if(*iter=='-')
iter=number[i].str.erase(iter)-1;
}
}
int flag=0;
for(int i=0;i<n-1;++i)
{
for(int j=i+1;j<n;++j)
{
if(number[i].str==number[j].str && number[j].judge==0)
{
++number[i].times;
number[j].judge=1;
flag=1;
}
}
}
sort(number,number+n,cmp);
for(int i=0;i<n;++i)
{
string::iterator iter=number[i].str.begin()+3;
if(number[i].judge==0)
number[i].str.insert(iter,'-');
}
if(flag==1)
{
for(int i=0;i<n;++i)
{
if(number[i].times!=0 && number[i].judge==0)
cout<<number[i].str<<" "<<number[i].times+1<<endl;
}
}
else
{
cout<<"No duplicates. "<<endl;
}
return 0;
}
输出的结果是正确的但是出现RuntimeError,刚开始刷OJ,也不清楚是什么原因,麻烦大神们帮我分析一下出现这个错误的原因以及解决办法,之后的刷题过程中好避免,感激不尽~