c++ 北大acm1002题,帮忙看一下

来源:百度知道 编辑:UC知道 时间:2024/05/21 11:11:37
原题地址http://acm.pku.edu.cn/JudgeOnline/problem?id=1002&lang=zh-CN&change=true
#include<iostream>
using namespace std;
int a[100005]={0};
int comp(const void *a,const void *b)
{
return *(int *)a-*(int *)b;
}
int main()
{
int c[27]={2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,0,7,7,8,8,8,9,9,9,0,0},i=0,j=0,k=2,n=0,sum=0;
char b[100];
cin>>n;
for(i=0;i<n;i++)
{
scanf("%s",b);
for(j=0;j<strlen(b);j++) //转换成标准形式
if(b[j]!='-')
{
if(b[j]>='A')a[i]=a[i]*10+c[b[j]-'A'];
else a[i]=a[i]*10+b[j]-'0';
}
}
qsort(a,n,sizeof(int),comp); //快排
for(i=0;i<n;i++)
{
if(a[i]==a[i+1]) //检验相同的连续号码
{
sum=1;
for(j=i+2;j<n;j++)
i

给你改的,只是输出有问题,其他的是对的。

#include<iostream>
using namespace std;
int a[100005]={0};
int comp(const void *a,const void *b)
{
return *(int *)a-*(int *)b;
}
int main()
{
int c[27]={2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,0,7,7,8,8,8,9,9,9,0,0},i=0,j=0,k=2,n=0,sum=0;
char b[100];
cin>>n;
for(i=0;i<n;i++)
{
scanf("%s",b);
for(j=0;j<strlen(b);j++) //转换成标准形式
if(b[j]!='-')
{
if(b[j]>='A')a[i]=a[i]*10+c[b[j]-'A'];
else a[i]=a[i]*10+b[j]-'0';
}
}
qsort(a,n,sizeof(int),comp); //快排
for(i=0;i<n;i++)
{
if(a[i]==a[i+1]) //检验相同的连续号码
{
sum=1;
for(j=i+2;j<n;j++)
if(a[j]==a[i])k++; //k初始为2
else break;
if(a[i]/10000<100)cout<<'0';
if(a[i]/10000<10)cout<<'0';
cout<<a[i]/10000<<'-';
if(a[i]%10000<1000)cout<<&