| ||||||||||
| 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 | |||||||||
哪个牛人给提供一组数据啊?写了一个程序,按照他给的数据输出是正确的,但是提交上去后是wrong answer.
希望哪个牛人给组数据再测测.
以下是源程序:
#include<stdio.h>
char *letter1[26]={{".-"},{"-..."},{"-.-."},{"-.."},{"."},{"..-."},{"--."},
{"...."},{".."},
{".---"},{"-.-"},{".-.."},{"--"},{"-."},{"---"},{".--."},{"--.-"},{".-."},
{"..."},{"-"},
{"..-"},{"...-"},{".--"},{"-..-"},{"-.--"},{"--.."}};
char *letter2[4]={{"..--"},{"---."},{".-.-"},{"----"}};
struct maps
{
int w;
char s;
}map[30]={{1,'E'},{2,'T'},{11,'I'},{12,'A'},{21,'N'},{22,'M'},{111,'S'},
{112,'U'},{121,'R'},{122,'W'},
{211,'D'},{212,'K'},{221,'G'},{222,'O'},{1111,'H'},{1112,'V'},{1121,'F'},
{1122,'_'},{1211,'L'},{1212,','},
{1221,'P'},{1222,'J'},{2111,'B'},{2112,'X'},{2121,'C'},{2122,'Y'},{2211,'Z'},
{2212,'Q'},{2221,'.'},{2222,'?'}};
int numbers[100];
char code[410];
int convert(char *);
char search(int);
int main()
{
int ks,i=0,j;
char message[110],c;
int codes,num,weight;
scanf("%d",&ks);
scanf("%c",&c);
for(;ks>0;ks--)
{
i=0;
j=0;
gets(message);
codes=convert(message);
for(;codes>=0;codes--)
{
num=numbers[codes];
weight=0;
j=i+num;
for(;i<j;i++)
{
c=code[i];
switch(c)
{
case '.':
weight=weight*10+1;
break;
case '-':
weight=weight*10+2;
break;
default:
break;
}
}
c=search(weight);
printf("%c",c);
}
printf("\n");
message[0]='\0';
code[0]='\0';
}
return 0;
}
int convert(char *s)
{
int i=0,j=0;
char c,*let,count=0;
while((c=s[i])!=0)
{
if(c<='Z'&&c>='A')
let=letter1[c-'A'];
else
{
switch(c)
{
case '_':
let=letter2[0];
break;
case '.':
let=letter2[1];
break;
case ',':
let=letter2[2];
break;
case '?':
let=letter2[3];
break;
default:
break;
}
}
count=0;
while(*let!=0)
{
code[j++]=*let++;
count++;
}
numbers[i++]=count;
}
code[j]='\0';
return i-1;
}
char search(int weight)
{
int low=0,mid,high=30;
mid=(high+low)/2;
while(low<=high)
{
if(map[mid].w>weight)
high=mid-1;
else if(map[mid].w<weight)
low=mid+1;
else
return(map[mid].s);
mid=(low+high)/2;
}
return('\0');
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator