传话游戏

传话游戏

时间限制: 1000ms 内存限制: 256MB

描述

Alice和Bob还有其他几位好朋友在一起玩传话游戏。这个游戏是这样进行的:首先,所有游戏者按顺序站成一排,Alice站第一位,Bob站最后一位。然后,Alice想一句话悄悄告诉第二位游戏者,第二位游戏者又悄悄地告诉第三位,第三位又告诉第四位……以此类推,直到倒数第二位告诉Bob。两位游戏者在传话中,不能让其他人听到,也不能使用肢体动作来解释。最后,Bob把他所听到的话告诉大家,Alice也把她原本所想的话告诉大家。 

由于传话过程中可能出现一些偏差,游戏者越多,Bob最后听到的话就与Alice所想的越不同。Bob听到的话往往会变成一些很搞笑的东西,所以大家玩得乐此不疲。经过几轮游戏后,Alice注意到在两人传话中,有些词汇往往会错误地变成其他特定的词汇。Alice已经收集到了这样的一个词汇转化的列表,她想知道她的话传到Bob时会变成什么样子,请你写个程序来帮助她。

输入

输入包括多组数据。第一行是整数 T,表示有多少组测试数据。每组数据第一行包括两个整数 N 和 M,分别表示游戏者的数量和单词转化列表长度。随后有 M 行,每行包含两个用空格隔开的单词 a 和 b,表示单词 a 在传话中一定会变成 b。输入数据保证没有重复的 a。最后一行包含若干个用单个空格隔开的单词,表示Alice所想的句子,句子总长不超过100个字符。所有单词都只包含小写字母,并且长度不超过20,同一个单词的不同时态被认为是不同的单词。你可以假定不在列表中的单词永远不会变化。

输出

对于每组测试数据,单独输出一行“Case #c: s”。其中,c 为测试数据编号,s 为Bob所听到的句子。s 的格式与输入数据中Alice所想的句子格式相同。

数据范围

1 ≤ T ≤ 100

小数据:2 ≤ N ≤ 10, 0 ≤ M ≤ 10 

大数据:2 ≤ N ≤ 100, 0 ≤ M ≤ 100



样例输入
2
4 3
ship sheep
sinking thinking
thinking sinking
the ship is sinking
10 5
tidy tiny
tiger liar
tired tire
tire bear
liar bear
a tidy tiger is tired
样例输出
Case #1: the sheep is thinking
Case #2: a tiny bear is bear




逻辑较为简单,代码:

//source here
#include <iostream>
#include <map>
#include <sstream>
#include <cstdio>

using namespace std;

int main()
{
    int T;
    int N,M;
    int cas=0;
    map<string,string> trans;
    while(cin>>T)
    {
        while(T--)
        {
            trans.clear();
            cin>>N>>M;
            string a,b;
            for(int i=0;i<M;i++)
            {
                cin>>a>>b;
                trans[a]=b;
            }
            string line;
            getchar();
            getline(cin,line);

            cout<<"Case #"<<cas+1<<": ";
            stringstream ss(line);
            string word;
            while(ss>>word)
            {
                int i=N;
                map<string,string>::iterator it;
                while(--i)
                {
                    it = trans.find(word);
                    if(it!=trans.end())///find
                    {
                        word = trans[word];
                    }
                    else    break;
                }

                cout<<word<<" ";
            }
            cout<<endl;
            cas++;
        }

    }
    return 0;
}


结果:

编号名称小数据大数据内存时间语言提交时间
18157 传话游戏 AC AC 520KB 30ms G++ 2013-04-06 20:09:07

<think>好的,用户问“传话”在英文中怎么表示,并且问pass a word是否正确。首先,我需要确认“传话”的具体含义。中文里的“传话”通常指将某人的话转达给另一个人,可能涉及口头传递信息,也可能有更特定的语境,比如游戏中的传话导致信息失真。 接下来,检查用户提到的“pass a word”是否正确。这个短语直译可能不太准确,因为“pass a word”在英语中并不常见。更常见的表达应该是“pass on a message”或者“relay a message”。需要确认用户是否混淆了直译和实际常用表达。 然后,考虑不同语境下的正确翻译。例如,在日常交流中,“请帮我传话给他”可以说“Please pass on the message to him”。如果是游戏中的传话,可能用“telephone”或者“Chinese whispers”更合适,尤其是后者指信息在传递中逐渐变化的现象。 还要考虑用户可能的背景。他们可能在学习英语,或者在写作时需要准确的表达。用户可能希望了解不同场合下的正确用法,而不仅仅是直译。需要提供多种表达方式,并解释其适用场景,帮助用户全面理解。 此外,用户可能没有意识到“pass a word”可能存在的歧义或不自然之处。需要指出这一点,并给出更自然的替代方案。同时,补充相关例句和用法,帮助用户掌握实际应用。 最后,确保回答结构清晰,分点说明不同情况,并给出例句和注意事项。这样用户能清楚了解不同表达的区别和正确用法,避免误解。</think>"传话"在英文中需根据具体语境选择表达方式: ### 1. 日常信息传递 ```python # 正确表达 "pass on a message" 或 "relay a message" 例句: "Could you please pass on a message to John?" "请帮我传话给他" → "Please pass on the message to him" ``` ### 2. 游戏场景(信息逐级传递) ```python # 特定表达 "telephone" (美式) 或 "Chinese whispers" (英式) 例句: "Let's play the telephone game" (指经典的传话游戏导致信息失真) ``` ### 3. 单字传递的特殊场景 ```python # 特定情况 "pass a word" 虽语法正确但非常用搭配 更自然的表达: "exchange a few words" (简短交谈) "pass a secret" (传递秘密) ``` ### 常见错误分析 - ❌ "pass a word" 易被误解为"传授一个单词" - ✅ "pass on a message" 更符合信息传递本意 - ✅ "relay information" 适用于正式场景 ```python # 错误示例修正 原句: "I need to pass a word to her" 修正: "I need to pass on a message to her" ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值