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 nanfeiyan88 at 2013-09-14 22:52:49
#include < stdio.h >
#include < string.h >
#include < stdlib.h >
struct tel{
	int num;
	char str[30];
	int count;
};
struct tel *array;
int count=0;
char atn[26]={'2','2','2','3','3','3','4','4','4','5','5','5','6','6','6','7','7','7','7','8','8','8','9','9','9','9'};

int putout(int n);
int insert(int num,char *str);
int changeto(char *str);
int local_atoi(char *str);

int main()
{
	int n,i;
	char str[30];
	scanf("%d",&n);
	array=(struct tel *)malloc(n*sizeof(struct tel));
	for(i=0;i<n;i++)
	{
		array[i].num=0;
		array[i].count=0;
	}
	for(i=0;i<n;i++)
	{
		scanf("%s",str);
		changeto(str);
	}
	putout(n);
	return 0;
}
int changeto(char *str)			//对输入的电话号码进行处理
{
	int len=strlen(str);
	int i,j;
	int num;
	char stup[30];
	for(i=0,j=0;i<len;i++)
	{
		if(str[i]=='-'||str[i]=='Q'||str[i]=='Z')
			continue;
		if(str[i]>='0'&&str[i]<='9')
		{
			stup[j]=str[i];
			j++;
		}else
		{
			stup[j]=atn[(str[i]-'A')];
			j++;
			continue;
		}
	}
	stup[j]='\0';
	num=local_atoi(stup);
	insert(num,stup);
	return 0;
}

int local_atoi(char *str)		//将输入的字符转换成整数
{
	int sum=0;
	int i,len;
	int basic=1000000;
	len=strlen(str);
	for(i=0;i<len;i++)
	{
		sum=sum+basic*(str[i]-'0');
		basic=basic/10;
	}
	return sum;
}

int insert(int num,char *str)		//将输入的号码以二分排序插入到array中,如果array已有,则将count+1.否则插入
{
	int i=0;
	int j=count-1;
	int m;
	if(count==0)
	{
		array[0].num=num;
		array[0].count=1;
		strcpy(array[0].str,str);
		count++;
		return 0;
	}
	while(i<=j)
	{
		m=(i+j)/2;
		if(num==array[m].num)
		{
			array[m].count++;
			return 0;
		}
		if(num>array[m].num)
			i=m+1;
		if(num<array[m].num)
			j=m-1;
	}
	for(j=count-1;j>=i;j--)
	{
		strcpy(array[j+1].str,array[j].str);
		array[j+1].num=array[j].num;
		array[j+1].count=array[j].count;
	}
	strcpy(array[i].str,str);
	array[i].num=num;
	array[i].count=1;
	count++;
	return 0;
}
int putout(int n)				//输出结果
{
	int i,j;
	int flag=1;
	char str[30];
	for(i=0;i<count;i++)
	{
		if(array[i].count>1)
		{
			flag=0;
			for(j=0;j<7;j++)
			{
				if(j==3)
					printf("-");
				printf("%c",array[i].str[j]);
			}
			printf(" %d\n",array[i].count);
		}
	}
	if(flag==1)
		printf("No duplicates.\n");
	return 0;
}

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