| ||||||||||
| 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 | |||||||||
为什么总是runtime error我不知道怎么回事了,我把字符串的大小开到了1000,我把数组的大小先开到了100005,后来又开到150000,可还是runtime error……
#include<iostream>
#include<cstdio>
#include<string.h>
#include<algorithm>
#include<stdlib.h>
#define M 1000
using namespace std;
struct tele{
int num;
int value;
};
void trf(char &a){
if(a=='A'||a=='B'||a=='C') a='2';
if(a=='D'||a=='E'||a=='F') a='3';
if(a=='G'||a=='H'||a=='I') a='4';
if(a=='J'||a=='K'||a=='L') a='5';
if(a=='M'||a=='N'||a=='O') a='6';
if(a=='P'||a=='R'||a=='S') a='7';
if(a=='T'||a=='U'||a=='V') a='8';
if(a=='W'||a=='X'||a=='Y') a='9';
}
int cmp(tele a,tele b){
return a.value<=b.value;
}
tele phone[100005];
tele ph[100005];
int main(){
int test;
char ch[M]={0};
while(scanf("%d",&test)!=EOF){
int i,j,k;
int mark;
for(i=0;i<test;i++){
scanf("%s",ch);
phone[i].num=0;
phone[i].value=0;
int len=strlen(ch);
k=0;
for(j=0;j<len;j++){
trf(ch[j]);
if(ch[j]<='9'&&ch[j]>='0'){
phone[i].value=phone[i].value*10+ch[j]-48;
k++;
}
}
memset(ch,'\0',sizeof(ch));
}/*既然很耗时,那不如先排好序吧,用快排*/
sort(phone,phone+test,cmp);
/*将其转化为数字了,接下来要开始搜了*/
k=0;
for(i=0;i<test;i++){
mark=0;
phone[i].num=1;
j=i+1;
while(phone[i].value==phone[j].value){
phone[i].num++;
j++;
mark=1;
if(j==test)
break;
}
if(mark!=0){
ph[k]=phone[i];
k++;
}
i=j;
i--;
}
if(ph[0].num>=2){
for(i=0;i<k;i++)
printf("%03d-%04d %d\n",ph[i].value/10000,ph[i].value%10000,ph[i].num);
}
else{
printf("No duplicates.\n");
}
memset(phone,0,sizeof(phone));
memset(ph,0,sizeof(ph));
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator