| ||||||||||
| 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 | |||||||||
哪位大牛能帮我找点错误,谢谢了我都已经测试了好多数据了,都对啊,但总说我WA,我就不知道到底是哪有问题了,请大牛帮我看看问题,代码附上
#include <iostream>
#include <stdlib.h>
#include <malloc.h>
#include <math.h>
char Tel[8][3] = {{'A','B','C'},{'D','E','F'},{'G','H','I'},{'J','K','L'},{'M','N','O'},{'P','R','S'},{'T','U','V'},{'W','X','Y'}};
int *Translate_Over_Tel;
int Translate_tel_letter(char *letter,int &real_tel)
{
char *ptr,*first;
ptr = &Tel[0][0];
first = &Tel[0][0];
while(*ptr!=*letter&&*ptr!='\0')
ptr++;
real_tel = (ptr-first)/3+2;
return 0;
}
int judgeissame(int *string1,int *string2,int i)
{
for(int j=0;j<i;j++)
{
while(*(string1+j*8)==*string2)
{
string1++;
string2++;
}
if(*string2==0)
return j;
}
return -1;
}
int taxis(int *string,int i)
{
struct MIN
{
char flag;
float sum;
};
int *serial = (int *)malloc(i*sizeof(int));
struct MIN *min = (struct MIN *)malloc(i*sizeof(MIN));
for(int n=0;n<i;n++)
{
min[n].sum = 0.0;
min[n].flag = true;
}
for(int m=0;m<i;m++)
{
for(int n=0;n<7;n++)
{
min[m].sum += string[n+m*8]*(float)pow(10.0,3-n);
}
}
for(int loop=0;loop<i;loop++)
{
int minsum = 100000;
for(int j=0;j<i;j++)
{
if((min[j].sum<minsum)&&min[j].flag)
{
minsum = min[j].sum;
serial[loop] = j;
}
}
min[serial[loop]].flag = false;
}
////////////////////////////////////////////cout
int number=0;
std::cout<<'\n';
for(int j=0;j<i;j++)
{
if(string[7+serial[j]*8]>1)
{
number=1;
for(int loop=0;loop<8;loop++)
{
std::cout<<string[loop+serial[j]*8];
if(loop==2)
std::cout<<"-";
if(loop==6)
std::cout<<" ";
if(loop==7)
std::cout<<'\n';
}
}
}
if(number==0)
std::cout<<"No duplicates."<<std::endl;
free(serial);
free(min);
return 0;
}
int main()
{
char tel_letter[300];
int temporary[8];
char *ptr;
int n,i=0,real_tel,m,jud,I=1;
std::cin>>n;
Translate_Over_Tel =(int *)malloc(n*8*sizeof(int));
while(I<=n)
{
std::cin>>tel_letter;
m = 0;
memset(temporary,0,sizeof(temporary));
ptr = tel_letter;
while(*ptr!='\0')
{
if(isupper(*ptr)&&*ptr!='Q'&&*ptr!='Z')
{
Translate_tel_letter(ptr,real_tel);
temporary[m] = real_tel;
m++;
}
if(isdigit(*ptr))
{
int int_tel;
int_tel = *ptr-'0';
temporary[m] = int_tel;
m++;
}
ptr++;
}
if(I>1)
{
jud=judgeissame(Translate_Over_Tel,temporary,i);
if(jud==-1)
{
for(int loop=0;loop<7;loop++)
{
Translate_Over_Tel[loop+i*8] = temporary[loop];
}
Translate_Over_Tel[7+i*8]=1;
i++;
}
if(jud!=-1)
{
Translate_Over_Tel[7+jud*8]++;
}
}
else if(I==1)
{
for(int loop=0;loop<7;loop++)
{
Translate_Over_Tel[loop] = temporary[loop];
}
Translate_Over_Tel[7]=1;
i++;
}
I++;
}
taxis(Translate_Over_Tel,i);
free(Translate_Over_Tel);
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator