Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

1002求教

Posted by 201030720520 at 2011-10-25 19:13:04
希望各位大牛指点一下,未什么我这个程序总是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:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator