| ||||||||||
| 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求教希望各位大牛指点一下,未什么我这个程序总是WA的???(在本地测试正确)
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
typedef struct Object
{
char object[9];
int num;
Object *next;
}object;
typedef struct Source
{
char** source;
int n;
}source;
void InitSource(Source &sour,int n)
{
int i;
sour.n=n;
sour.source=(char**)malloc(n*sizeof(char));
if(sour.source==NULL) return ;
for(i=0;i<n;i++)
{
sour.source[i]=(char*)malloc(18*sizeof(char));
if(sour.source[i]==NULL) return ;
gets(sour.source[i]);
}
}
void TranslateOne(char *source,char *obj)
{
int i=0,j=0;
obj[8]='\0';
while(source[j]!='\0')
{
if(i==3)
{
obj[i]='-';
i++;
}
switch(source[j])
{
case '0' : obj[i]='0'; break;
case '1' : obj[i]='1'; break;
case 'A' :
case '2' :
case 'B' :
case 'C' : obj[i]='2'; break;
case 'D' :
case '3' :
case 'E' :
case 'F' : obj[i]='3'; break;
case 'G' :
case '4' :
case 'H' :
case 'I' : obj[i]='4'; break;
case 'J' :
case '5' :
case 'K' :
case 'L' : obj[i]='5'; break;
case 'M' :
case 'N' :
case '6' :
case 'O' : obj[i]='6'; break;
case 'P' :
case 'R' :
case '7' :
case 'S' : obj[i]='7'; break;
case 'T' :
case 'U' :
case '8' :
case 'V' : obj[i]='8'; break;
case 'W' :
case 'X' :
case '9' :
case 'Y' : obj[i]='9'; break;
default : i--; break;
}
i++;
j++;
}
}
void TranslateAll(Source &sour,Object *objList)
{
int i,plag=1;
char obj1[9];
Object *p=objList,*q=objList,*s,*t;
TranslateOne(sour.source[0],obj1);
objList=(Object*)malloc(sizeof(Object));
if(objList==NULL) return ;
objList->num=1;
objList->next=NULL;
strcpy(objList->object,obj1);
for(i=1;i<sour.n;i++)
{
TranslateOne(sour.source[i],obj1);
p=objList;
q=objList;
while(p!=NULL)
{
if(strcmp(p->object,obj1)==0)
{
p->num++;
break;
}
q=p;
p=p->next;
}
if(p==NULL)
{
p=(Object*)malloc(sizeof(Object));
if(p==NULL) return ;
p->num=1;
p->next=NULL;
strcpy(p->object,obj1);
s=objList;
while(s!=NULL)
{
if(strcmp(s->object,obj1)<0)
{
t=s;
s=s->next;
}
if(s==objList)
{
p->next=objList;
objList=p;
break;
}
else
{
p->next=s;
t->next=p;
break;
}
}
if(s==NULL)
t->next=p;
}
}
p=objList;
while(p!=NULL)
{
if(p->num>1)
{
printf("%s %d\n",p->object,p->num);
plag=0;
}
p=p->next;
}
if(plag==1)
printf("No duplicates.");
}
int main()
{
int n;
Source sour;
Object* obj=NULL;
scanf("%d",&n);
getchar();
InitSource(sour,n);
TranslateAll(sour,obj);
return 1;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator