【題解】ZeroJudge h026: 202001_1 猜拳

【題目敘述】https://zerojudge.tw/ShowProblem?problemid=h026
【解題想法】條件判斷

#include <iostream>
using namespace std;

struct Fist {
    //a[x].won: 能贏過 x 的出拳
    int won, lost, drew;
} a[6];

int main() {
    //0指石頭,2指剪刀,5指布
    a[0] = {5,2,0};
    a[2] = {0,5,2};
    a[5] = {2,0,5};
    int F, N;
    cin >> F >> N;
    int y[N];
    for (int i = 0; i < N; i++) {
        cin >> y[i];
    }
    for (int i = 0; i < N; i++) {
        if (F == a[y[i]].drew) {
            cout << F << " ";
            //下一拳
            if (i > 0 && y[i] == y[i-1]) {
                F = a[y[i]].won;
            } else {
                F = y[i];
            }
        } else {
            if (F == a[y[i]].won) {
                cout << F << " : Won at round " << i+1 << "\n";
            } else {
                cout << F << " : Lost at round " << i+1 << "\n";
            }
            return 0;
        }
    }
    cout << ": Drew at round " << N << "\n";
    return 0;
}

分享本文 Share with friends