# f442: 老鷹抓小雞 Eagle ## 題目: 老鷹抓小雞是小孩很喜歡玩的一種遊戲,他的玩法是由一人扮演老鷹,一人 扮演母雞,其他人扮演小雞,所有小雞都要躲在母雞身後。遊戲開始後老鷹會去 抓跟不上母雞的小雞,當老鷹抓到小雞,就結束一回合的遊戲,被抓到的小雞會 改扮演老鷹,老鷹則被排進被抓到的小雞原本的位置中,改扮演小雞,然後就開 始下一回合的遊戲。 請寫一個程式模擬遊戲後的隊伍情況。 ## 測資說明: 輸入總共五列,第一列有一個整數 N (2 ≤ N ≤ 2000),表示小雞的總數量。 第二列有 N 個整數,代表一開始扮演小雞的人的編號 Ci (1≤ Ci ≤ 10000,1≤ i ≤ N)。 第三列有一個整數 E (1≤ E ≤ 10000),代表一開始扮演老鷹的人的編號。 第四列有一個整數 Q (1 ≤ Q ≤ 200),代表經過幾回合的遊戲。 第五列有 Q 個整數,代表每一回合被抓到的小雞的編號。 整數之間以空白間隔。 輸出一行,為 Q 回合遊戲結束後小雞的編號序列,編號間以一個空白間隔。 ## C++ Code: 使用iterator ```cpp=1 #include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { int N = 0, E = 0, Q = 0, tmp = 0; vector<int> v_tg, v_line; vector<int>::iterator iter; cin >> N; for (int i = 0; i < N; i++) { cin >> tmp; v_tg.push_back(tmp); } cin >> E >> Q; for (int i = 0; i < Q; i++) { cin >> tmp; v_line.push_back(tmp); } for (int i = 0; i < Q; i++) { iter = find(v_tg.begin(), v_tg.end(), v_line[i]); *iter = E; E = v_line[i]; } for (auto iter:v_tg) { cout << iter << ' '; } return 0; } ``` --- 使用index ```cpp=1 #include <iostream> #include <vector> using namespace std; int main() { int N = 0, E = 0, Q = 0, tmp = 0, size = 0; vector<int> v_tg, v_line; vector<int>::iterator iter; cin >> N; for (int i = 0; i < N; i++) { cin >> tmp; v_tg.push_back(tmp); } cin >> E >> Q; for (int i = 0; i < Q; i++) { cin >> tmp; v_line.push_back(tmp); } size = v_tg.size(); for (int i = 0; i < Q; i++) { for (int j = 0; j < size; j++) { if (v_tg[j] == v_line[i]) { v_tg[j] = E; E = v_line[i]; } } } for (int i = 0; i < size; i++) { cout << v_tg[i] << " "; } return 0; } ``` - [Zerojudge題目連結](https://zerojudge.tw/ShowProblem?problemid=f442) ###### tags: `APCS` `C++`
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up