九度OJ 题目1029:魔咒词典 (三)
1);
qsort(b,k,sizeof(b[0]),cmp2);
scanf("%d",&n);
getchar();
while(n--)
{
gets(c);
ans=-1;
low=0;high=k-1;
if(c[0]=='[')
{
int len;
len=strlen(c);
for(i=0;i
c[i]=c[i+1];
c[i]='\0';
while(low<=high)
{
mid=(low+high)/2;
tmp=strcmp(c,a[mid].wo);
if (tmp==0) {ans=mid;break;}
else if(tmp>0) low=mid+1;
else high=mid-1;
}
if(ans==-1) printf("what \n");
else printf("%s\n",a[ans].ex);
}
else
{
while(low<=high)
{
mid=(low+high)/2;
tmp=strcmp(c,b[mid].ex);
if (tmp==0) {ans=mid;break;}
else if(tmp>0) low=mid+1;
else high=mid-1;
}
if(ans==-1) printf("what \n");
else printf("%s\n",b[ans].wo);
}
}
return 0;
}
#include
#include
#include
typedef struct Str{
char name[22];//魔咒
char function[82];//对应功能
}Str;
Str str[10001];
int main() {
int n,i,j,index = 0,flag,start,k;
char s[104];
//char command[104];
while (gets(s)){
//词典最后一行以“@END@”结束,这一行不属于词典中的词条
if(s[0] == '@'){
break;
}
else{
//输入魔咒
for(i = 0;s[i] != ']';i++){
str[index].name[i] = s[i];
}
str[index].name[i++] = ']';
str[index].name[i] = '\0';
//输入对应功能
start = i+1;
for(i = start,k = 0;s[i] != '\n';k++,i++){
str[index].function[k] = s[i];
}
str[index].function[k] = '\0';
}
index++;
}//while
scanf("%d\n",&n);
for(i = 0;i < n;i++){
gets(s);
flag = 0;
//输入的是魔咒输出对应功能
if(s[0] == '['){
for(j = 0;j < index;j++){
//找到魔咒对应的功能
if(strcmp(s,str[j].name) == 0){
flag = 1;
//输出对应的功能
printf("%s\n",str[j].function);
break;
}
}
}
//输入的是魔咒的功能输出魔咒
else{
for(j = 0;j < index;j++){
//找到对应的魔咒
if(strcmp(s,str[j].function) == 0){
flag = 1;
//输出对应的魔咒
for(k = 1;str[j].name[k] != ']';k++){
printf("%c",str[j].name[k]);
}
printf("\n");
break;
}
}
}
//没有找到
if(flag == 0){
printf("what \n");
}
}
return 0;
}
#include
#include
#include
typedef struct Str{
char name[22];//魔咒
char function[82];//对应功能
}Str;
Str str[10001];
int main() {
int n,i,j,index = 0,flag,start,k;
char s[104];
//char command[104];
while (gets(s)){
//词典最后一行以“@END@”结束,这一行不属于词典中的词条
if(s[0] == '@'){
break;
}
else{
//输入魔咒
for(i = 0;s[i] != ']';i++){
str[index].name[i] = s[i];
}
str[index].name[i++] = ']';
str[index].name[i] = '\0';
//输入对应功能
start = i+1;
for(i = start,k = 0;s[i] != '\n';k++,i++){
str[index].function[k] = s[i];
}
str[index].function[k] = '\0';
}
index++;
}//while
scanf("%d\n",&n);
for(i = 0;i