| ||||||||||
| 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的代码,本地运行正确,提交怎么都市错误或者超市。。。哪位大神帮忙看看呗#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: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator