熱門文章

2025年3月10日 星期一

ZeroJudge 解題筆記:f442. 老鷹抓小雞 Eagle

作者:王一哲
日期: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];  // 印出答案
    }
}


沒有留言:

張貼留言