2014程式設計之美熱身賽 傳話遊戲

2022-03-21 07:13:18 字數 2371 閱讀 6147

描述

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,同乙個單詞的不同時態被認為是不同的單詞。你可以假定不在列表中的單詞永遠不會變化。

1 ≤ t ≤ 100

小資料:2 ≤ n ≤ 10, 0 ≤ m ≤ 10

大資料:2 ≤ n ≤ 100, 0 ≤ m ≤ 100

輸出對於每組測試資料,單獨輸出一行「case #c: s」。其中,c 為測試資料編號,s 為bob所聽到的句子。s 的格式與輸入資料中alice所想的句子格式相同。

樣例輸入

24 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

解法:

模擬題。

將對應規則儲存在map裡面,方便轉換。

用istringstream將輸入的一行字串,分別儲存在vector裡面,

最後遍歷n-1次,應用轉換規則。

用getline()讀入一行字串前,需要先用getchar()將上一行的『\n』過濾掉才行

1:  #include
2:  #include
3:  #include
4:  #include
5:  #include
6:  

using

namespace std;

7:  

int main()

18:          vector ve;
19:  

string s;

20:          getchar();
21:          getline(cin,s);
22:          istringstream sin(s);
23:  

while(sin>>a) ve.push_back(a);

24:  

25:  

for(int i=1;i

26:  

for(int j=0;j

27:  

if(ma.find(ve[j])!=ma.end())

28:                      ve[j]=ma[ve[j]];
29:              }
30:          }
31:          cout<<"case #"

<":";

32:  

for(int k=0;k

33:              cout<<" "

<

34:          }
35:          cout<
36:      }
37:  }

傳話遊戲 程式設計之美挑戰賽

題目描述 時間限制 2000ms 單點時限 1000ms 記憶體限制 256mb alice和bob還有其他幾位好朋友在一起玩傳話遊戲。這個遊戲是這樣進行的 首先,所有遊戲者按順序站成一排,alice站第一位,bob站最後一位。然後,alice想一句話悄悄告訴第二位遊戲者,第二位遊戲者又悄悄地告訴第...

2013程式設計之美資格賽 傳話遊戲

時間限制 1000ms 記憶體限制 256mb alice和bob還有其他幾位好朋友在一起玩傳話遊戲。這個遊戲是這樣進行的 首先,所有遊戲者按順序站成一排,alice站第一位,bob站最後一位。然後,alice想一句話悄悄告訴第二位遊戲者,第二位遊戲者又悄悄地告訴第三位,第三位又告訴第四位 以此類推...

2013程式設計之美資格賽 傳話遊戲

時間限制 1000ms 記憶體限制 256mb alice和bob還有其他幾位好朋友在一起玩傳話遊戲。這個遊戲是這樣進行的 首先,所有遊戲者按順序站成一排,alice站第一位,bob站最後一位。然後,alice想一句話悄悄告訴第二位遊戲者,第二位遊戲者又悄悄地告訴第三位,第三位又告訴第四位 以此類推...