永发信息网

c语言北大ACM—OJ-1002的一个小问题

答案:2  悬赏:50  手机版
解决时间 2021-11-20 10:52
  • 提问者网友:美人性情
  • 2021-11-19 11:44
c语言北大ACM—OJ-1002的一个小问题
最佳答案
  • 五星知识达人网友:玩家
  • 2021-11-19 12:26
本人的烂代码,参考下下。感觉你的效率很低,而且部分地方还有问题。

#include
#include
#include
int map[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 cmp ( const void *a , const void *b )
{
return *(int *)a - *(int *)b;
}

int main()
{
int n, *d,i,j,maxNum=0,dul,temp;
char key[50];
scanf("%d",&n);
d=(int *)malloc(sizeof(int)*n);
for (i=0;i {
d[i]=0;
}
for(i=0;i {
scanf("%s",key);
for (j=0;j {
if (key[j]!='-')
{
if (key[j]>='A')
{
d[i]=d[i]*10+map[key[j]-'A'];
}
else
{
d[i]=d[i]*10+key[j]-'0';
}
}
}
}

//快排
qsort(d,n,sizeof(int),cmp);
temp=d[0]; dul=1;
for (i=1;i {

if (d[i]==temp)
{
dul++;
}
else
{
if (dul>1)
{
maxNum=dul>maxNum?dul:maxNum;
printf("%03d-%04d %d\n",d[i-1]/10000,d[i-1]%10000,dul);

}
temp=d[i];
dul=1;
}
}
if (dul>1)
{
maxNum=dul>maxNum?dul:maxNum;
printf("%03d-%04d %d\n",d[i-1]/10000,d[i-1]%10000,dul);
}
if (maxNum<2)
{
printf("No duplicates. \n");
}
}
全部回答
  • 1楼网友:山君与见山
  • 2021-11-19 12:50
唉,又是1002,我也做了好长时间,自己找的数据都能通过,就是不AC,程序单是大的改动我都改到第四版了,郁闷啊.......
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯