| ||||||||||
| 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 | |||||||||
ft啊,怎么回事?#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define M 101
#define N 6
struct MorseCode
{
char code[N];
char ch;
}list[30]={{".-\0",'A'},{"-...\0",'B'},{"-.-.\0",'C'},{"-..\0",'D'},{".\0",'E'},{"..-.\0",'F'},{"--.\0",'G'},
{"....\0",'H'},{"..\0",'I'},{".---\0",'J'},{"-.-\0",'K'},{".-..",'L'},{"--\0",'M'},{"-.\0",'N'},
{"---\0",'O'},{".--.\0",'P'},{"--.-\0",'Q'},{".-.\0",'R'},{"...\0",'S'},{"-\0",'T'},
{"..-\0",'U'},{"...-\0",'V'},{".--\0",'W'},{"-..-\0",'X'},{"-.--\0",'Y'},{"--..\0",'Z'},
{"..--\0",'_'},{".-.-\0",','},{"---.\0",'.'},{"----\0",'?'}};
char *chrtocode(char ch)
{
char *p=(char *)malloc(N);
for(int i=0;i<30;i++)
if(ch==list[i].ch)
{ strcpy(p,list[i].code);
return p;
}
}
char codetochr(char *p)
{
for(int i=0;i<30;i++)
if(strcmp(p,list[i].code)==0)
return list[i].ch;
}
void decode(char *code,int casenum)
{
char str[4*M],result[M],temp[N],numstr[M];
int codelen=strlen(code);
char *p;
int cur=0;
p=chrtocode(code[0]);
strcpy(str,p);
numstr[cur++]=strlen(p);
for(int i=1;i<codelen;i++)
{
p=chrtocode(code[i]);
int len=strlen(p);
strcat(str,p);
numstr[cur++]=len;
}
int k=0,n=0;
for(int j=cur-1;j>=0;j--)
{
memset(temp,'\0',N); //开始用malloc为numstr开辟空间,结果发现
for(int s=0;s<numstr[j];s++) //numstr[j]的值会变!!(对sample input中最后一组数据)
temp[s]=str[k++]; //直接定义一个数组就过了,ft!
result[n++]=codetochr(temp);
}
result[n]='\0';
printf("%d: %s\n",casenum,result);
}
int main()
{
int testcase,i;
char code[M];
scanf("%d",&testcase);
for(i=0;i<testcase;i++)
{
scanf("%s",code);
decode(code,i+1);
}
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator