思路:
使用两个二维数组分别存储Key和Value, 当找到Key,时输出Value; 找到Value时输出Key;
注意:1)此题使用STL 中map会 Memory Limit Exceeded
2) Key长度不会超过20, Value 长度不会超过 80, 刚开始搞反了,一直出现Output Limit Exceeded
#include <iostream>
#include <string>
#include <map>
using namespace std;
#define M 100010
char key[100];
char value[100];
char dict_key[M][24];
char dict_value[M][84];
char tmp;
int n, t;
int main()
{
int i = 0, j, len;
n = 0;
while(scanf("%c", &tmp) != EOF )
{
if (tmp == '@')
{
break;
}
scanf("%s]", key);
key[strlen(key) - 1] = 0;
getchar();
gets(value);
strcpy(dict_key[n], key);
strcpy(dict_value[n], value);
++n;
}
gets(key);
scanf("%d", &t);
getchar();
while(t--)
{
gets(key);
len = strlen(key);
if (key[0] == '[')
{
--len;
for (i = 1, j = 0; i < len;)
{
key[j++] = key[i++];
}
key[j] = 0;
for (i = 0; i < n; ++i)
{
if (!strcmp(dict_key[i], key))
{
printf("%s\n", dict_value[i]);
break;
}
}
}
else
{
for (i = 0; i < n; ++i)
{
if (!strcmp(dict_value[i], key))
{
printf("%s\n", dict_key[i]);
break;
}
}
}
if (i == n)
{
printf("what?\n");
}
}
return 0;
}