hdu 1880 魔咒词典--字符串简单查找

来源:互联网 发布:sql维护计划 编辑:程序博客网 时间:2024/05/16 11:05

思路:

使用两个二维数组分别存储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 100010char 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;}


原创粉丝点击