Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โปรแกรม C++ หาผู้ชนะเกมไพ่

สมมติว่าเรามีตัวเลข n, อาร์เรย์ A และ B ขนาด k1 และ k2 อมลและบิมลเล่นเกมไพ่ มีไพ่ n ใบ หมายเลข 1 ถึง n เริ่มต้นแจกไพ่ระหว่างกัน เกมดำเนินไป: แต่ละรอบแต่ละคนเลือกไพ่ใบหนึ่งจากมือ (ใดก็ได้) วางบนโต๊ะ ปิดไว้ไม่ให้อีกฝ่ายเห็น แล้วเปิดไพ่ทั้งสอง ใครมีเลขมากกว่าเอาไพ่ทั้งสองใบ ไพ่ใดก็ได้เล่นซ้ำได้ A คือไพ่อมลเล่น B คือไพ่บิมลเล่น ผู้ที่ไม่มีไพ่แพ้ หาผู้ชนะสุดท้าย

เช่น ถ้าอินพุตคือ n = 5; A = [3, 2]; B = [5, 1, 4] เอาต์พุตจะเป็น Bimal เพราะเริ่มเล่น (3,5) บิมลเอาทั้งสอง แล้ว (3,1) อมลเอา แล้ว (3,4) บิมลเอา แล้วอมลเล่น 1 บิมลเอาด้วย 5 ไม่มีไพ่เหลือ

ขั้นตอนการแก้ปัญหา

d := 0, e := 0
for i := 0 ถึง size of A - 1:
    f := A[i]
    if d < f: d := f
for i := 0 ถึง size of A - 1:
    f := A[i]
    if e < f: e := f
if d > e: return "Amal"
otherwise: return "Bimal"

ตัวอย่างโค้ด

#include <bits/stdc++.h>
using namespace std;

string solve(int n, vector<int> A, vector<int> B) {
    int d = 0, e = 0;
    for (int i = 0; i < A.size(); i++) {
        int f = A[i];
        if (d < f) d = f;
    }
    for (int i = 0; i < A.size(); i++) {
        int f = A[i];
        if (e < f) e = f;
    }
    if (d > e) return "Amal";
    else return "Bimal";
}

int main() {
    int n = 5;
    vector<int> A = {3, 2};
    vector<int> B = {5, 1, 4};
    cout << solve(n, A, B) << endl;
}

อินพุต

5, {3, 2}, {5, 1, 4}

เอาต์พุต

Bimal