【POJ 2503】Babelfish(字符串)

给定字典,再询问。

字典与询问之间有一个空行。

cin.peek()是一个指针指向当前字符。

#include<iostream>
#include<string>
#include<map>
using namespace std;
map<string, string>dic;
string s, t;
int f;
int main()
{
    ios::sync_with_stdio(false);
    while(cin >> s)
        if(cin.peek() == ‘\n‘)//指针当前指向\n
            if(!f)
            {
                f = 1;
                dic[s] = t;//当前读入的s是外星文,刚才读入的t是对应的英文
            }
            else
                cout << ((t = dic[s]) != "" ? t : "eh" ) << "\n";
        else//未换行说明s是字典的英文
        {
            f = 0;//f=0代表下一个要读外星文
            t = s;
        }
}

处理空行的技巧

#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
#define N 100005
#define M 15
char s[N];
int c;
struct mydic
{
    char zh[M];//外星文
    char en[M];//英文
} dic[N];
int cmp(const mydic &a, const mydic &b)
{
    return strcmp(a.zh, b.zh) >= 0;
}
void  solve()
{
    int l = 0, r = c;
    while(l < r)
    {
        int m = r+l >> 1;
        int f = strcmp(s, dic[m].zh);
        if(f == 0)
        {
            printf("%s\n", dic[m].en);
            return;
        }
        if(f < 0)
            l = m + 1;
        else
            r = m;
    }
    printf("eh\n");
}
int main()
{
    while(gets(s))
    {
        if(!s[0])break;//读到空行
        sscanf(s,"%s%s",dic[c].en,dic[c].zh);
        c++;
    }
    sort(dic, dic + c, cmp);
    while(gets(s))
        solve();
}

  

  

时间: 2024-10-07 10:45:06

【POJ 2503】Babelfish(字符串)的相关文章

poj 2503 Babelfish (map,trie 树)

链接:poj 2503 题意:输入 语言A及翻译为语言B的词典,之后再输入语言B的单词,判断是否能从词典中找到, 若能找到,将其翻译为语言A,否则输出"eh". 思路:这题肯定得先将词典对应语言存起来,但是如果直接暴力找输入的单词是否出现过,必然会TLE 因为单词都是一对一的关系,可以用map实现 当然,trie树是用空间换时间,对于字符串的查找,在时间上有着相当的优势,因此也可以用trie树 注:sscanf函数,从一个字符串中读进与指定格式相符的数据. map实现:938MS #i

poj 2503:Babelfish(字典树,经典题,字典翻译)

Babelfish Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 30816   Accepted: 13283 Description You have just moved from Waterloo to a big city. The people here speak an incomprehensible dialect of a foreign language. Fortunately, you have

POJ 2503 Babelfish (Trie树 或 map)

Babelfish Time Limit: 3000MS        Memory Limit: 65536K Total Submissions: 34278        Accepted: 14706 Description You have just moved from Waterloo to a big city. The people here speak an incomprehensible dialect of a foreign language. Fortunately

POJ 2503 Babelfish(字典树)

题目链接:http://poj.org/problem?id=2503 题意:翻译单词,若在词典中找不到则输出eh. 思路:裸的字典树. 代码: #include <iostream> #include <stdio.h> #include <string.h> #include <math.h> #include <algorithm> #include <string> #include <vector> using

POJ 2503 Babelfish(字典树)

Babelfish Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 35009   Accepted: 14979 Description You have just moved from Waterloo to a big city. The people here speak an incomprehensible dialect of a foreign language. Fortunately, you have

poj 2503 Babelfish

题目链接:http://poj.org/problem?id=2503 题目大意:就是给你一本词典,问你能否在词典中找到你要查询单词的意思,不能就输出eh 思路:map的入门级题,直接词典中的词组存到map中,然后直接查询.就是有些细节需要注意 code: #include<cstdio> #include<iostream> #include<cmath> #include<string> #include<map> using namespa

poj 2503 Babelfish(Map、Hash、字典树)

题目链接:http://poj.org/bbs?problem_id=2503 思路分析: 题目数据数据量为10^5, 为查找问题,使用Hash或Map等查找树可以解决,也可以使用字典树查找. 代码(Map实现): #include <iostream> #include <sstream> #include <string> #include <map> using namespace std; int main() { char word[15], fo

POJ 2503 Babelfish(map入门)

题目链接:http://poj.org/problem?id=2503 代码: #include<cstdio> #include<string> #include<map> #include<iostream> using namespace std; int main(void){ char english[11],foreign[11]; map<string,bool>appear; //记录foreign与english的配对映射是否出

poj 2503 Babelfish(字典树或着STL)

Babelfish Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 35828   Accepted: 15320 Description You have just moved from Waterloo to a big city. The people here speak an incomprehensible dialect of a foreign language. Fortunately, you have

POJ 2503 Babelfish qsort+bserach

Babelfish Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 36951   Accepted: 15743 Description You have just moved from Waterloo to a big city. The people here speak an incomprehensible dialect of a foreign language. Fortunately, you have