編程之美資格賽傳話遊戲
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
題目列表 > 傳話游戲
時(shí)間限制: 1000ms 內(nèi)存限制: 256MB
描述
Alice和Bob還有其他幾位好朋友在一起玩?zhèn)髟捰螒?。這個(gè)游戲是這樣進(jìn)行的:首先,所有游戲者按順序站成一排,Alice站第一位,Bob站最后一位。然后,Alice想一句話悄悄告訴第二位游戲者,第二位游戲者又悄悄地告訴第三位,第三位又告訴第四位……以此類推,直到倒數(shù)第二位告訴Bob。兩位游戲者在傳話中,不能讓其他人聽到,也不能使用肢體動(dòng)作來解釋。最后,Bob把他所聽到的話告訴大家,Alice也把她原本所想的話告訴大家。?
由于傳話過程中可能出現(xiàn)一些偏差,游戲者越多,Bob最后聽到的話就與Alice所想的越不同。Bob聽到的話往往會(huì)變成一些很搞笑的東西,所以大家玩得樂此不疲。經(jīng)過幾輪游戲后,Alice注意到在兩人傳話中,有些詞匯往往會(huì)錯(cuò)誤地變成其他特定的詞匯。Alice已經(jīng)收集到了這樣的一個(gè)詞匯轉(zhuǎn)化的列表,她想知道她的話傳到Bob時(shí)會(huì)變成什么樣子,請(qǐng)你寫個(gè)程序來幫助她。
輸入
輸入包括多組數(shù)據(jù)。第一行是整數(shù)?T,表示有多少組測(cè)試數(shù)據(jù)。每組數(shù)據(jù)第一行包括兩個(gè)整數(shù)?N?和?M,分別表示游戲者的數(shù)量和單詞轉(zhuǎn)化列表長度。隨后有?M?行,每行包含兩個(gè)用空格隔開的單詞?a?和?b,表示單詞?a?在傳話中一定會(huì)變成?b。輸入數(shù)據(jù)保證沒有重復(fù)的?a。最后一行包含若干個(gè)用單個(gè)空格隔開的單詞,表示Alice所想的句子,句子總長不超過100個(gè)字符。所有單詞都只包含小寫字母,并且長度不超過20,同一個(gè)單詞的不同時(shí)態(tài)被認(rèn)為是不同的單詞。你可以假定不在列表中的單詞永遠(yuǎn)不會(huì)變化。
輸出
對(duì)于每組測(cè)試數(shù)據(jù),單獨(dú)輸出一行“Case?#c:?s”。其中,c?為測(cè)試數(shù)據(jù)編號(hào),s?為Bob所聽到的句子。s?的格式與輸入數(shù)據(jù)中Alice所想的句子格式相同。
數(shù)據(jù)范圍
1?≤?T?≤?100
小數(shù)據(jù):2?≤?N?≤?10,?0?≤?M?≤?10?
大數(shù)據(jù):2?≤?N?≤?100,?0?≤?M?≤?100?
有參考網(wǎng)上ACer的代碼
#include <iostream> #include <stdio.h> #include <string.h> #include <math.h> #include <string> #include <map>using namespace std; map<string,string> mm; char s1[30],s2[30],s[110],*p; int t,m,n;void? fun() {int i;string str;str=p;for(i=1;i<n;i++) {if(mm.count(str))str=mm[str];elsebreak;}?cout<<str; } int? main() {int i,cnt;scanf("%d",&t);getchar();for(t=1;t<=t;t++){mm.clear();scanf("%d %d",&n,&m);getchar();for(i=0;i<m;i++){scanf("%s %s",s1,s2);getchar();?mm[s1]=s2;}gets(s);cout<<"Case #"<<t<<": ";p=strtok(s," ");solve();while((p=strtok(NULL," "))){cout<<" ";fun();}cout<<endl;}return 0; }
轉(zhuǎn)載于:https://my.oschina.net/dianpaopao/blog/120674
總結(jié)
以上是生活随笔為你收集整理的編程之美資格賽傳話遊戲的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 项目管理中,最难管的是什么?(转)
- 下一篇: 新浪微博-企业微博运营手册