日期:2025年3月10日
ZeroJudge 題目連結:f442. 老鷹抓小雞 Eagle
解題想法
我將交換小雞、老鷹編號的部分拆開來寫,這樣會比較容易看懂。
Python 程式碼
使用時間約為 27 ms,記憶體約為 3.8 MB,通過測試。
import sys
for line in sys.stdin:
n = int(line) # 小雞數量
arr = list(map(int, input().split())) # 小雞編號
e = int(input()) # 老鷹編號
q = int(input()) # 遊戲回合
tar = list(map(int, input().split())) # 每回合抓到的小雞編號
for t in tar: # 從 tar 依序讀取編號
i = arr.index(t) # t 在 arr 中的索引值
c = t # 暫存下一回合老鷹編號
arr[i] = e # 更新 arr
e = c # 更新 e
print(*arr) # 印出答案
C++ 程式碼
使用時間約為 3 ms,記憶體約為 360 kB,通過測試。
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
ios::sync_with_stdio(0); cin.tie(0);
int n; // 小雞數量
while(cin >> n) {
vector<int> arr (n); // 小雞編號
for(int i=0; i<n; i++) cin >> arr[i];
int e, q, t; cin >> e >> q; // 老鷹編號,遊戲回合,每回合抓到的小雞編號
for(int i=0; i<q; i++) { // 執行 q 次
cin >> t; // 讀取抓到的小雞編號
int j = find(arr.begin(), arr.end(), t) - arr.begin(); // t 在 arr 中的索引值
int c = t; // 暫存下一回合老鷹編號
arr[j] = e; // 更新 arr
e = c; // 更新 e
}
for(int i=0; i<n; i++) cout << arr[i] << " \n"[i == n-1]; // 印出答案
}
}
沒有留言:
張貼留言