| ||||||||||
| 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了分析原因可能是:
要一块输出,而不能输入一次输出一次
source code:
#include <stdio.h>
#include <string.h>
#include <iostream.h>
void main()
{
char * morse[30]={".-","-...","-.-.","-..",".","..-.","--.",
"....","..",".---","-.-",".-..","--","-.",
"---",".--.","--.-",".-.","...","-","..-",
"...-",".--","-..-","-.--","--..",
"..--",".-.-","---.","----"};
int input[101];
char a[501];
int len[101];
char c;
int m,n,i=0; int j;
cin>>n;
for(int l=0;l<n;l++){
for(i=0;i<100;i++){
scanf("%c",&c);
if(c=='\n') break;
if(('A'<=c)&&(c<='Z')) input[i]=(int)(c-'A');
else
switch(c){
case '_': input[i]=26; break;
case ',': input[i]=27; break;
case '.': input[i]=28; break;
case '?': input[i]=29; break;
}
}
int ilength=i;
printf("%d: ",l+1);
int index=0;m=0;
for(i=0;i<ilength;i++){
int k=i;
j=0;
while(j<(int)strlen(morse[input[k]]))
a[index++]=morse[input[k]][j++];
len[m++]=j;
}
for(i=0;i<m/2;i++){
int temp =len[i];
len[i]=len[m-1-i];
len[m-1-i]=temp;
}
index=0;
char compare[5];
for(i=0;i<m;i++){
for(j=0;j<len[i];j++)
compare[j]=a[index++];
compare[j]='\0';
for(j=0;j<30;j++)
if(!strcmp(morse[j],compare))
break;
if((0<=j)&&(j<=25))
c=(char)j+'A';
else
switch(j){
case 26: c='_'; break;
case 27: c=','; break;
case 28: c='.'; break;
case 29: c='?'; break;
}
printf("%c",c);
}
printf("\n");
}
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator