Vấn đề mô phỏng trò chơi cá cược: Phân tích thuật toán

Mô tả bài toán

Bài toán "Trò chơi vui vẻ với cược nhỏ" mô phỏng một trò chơi đơn giản:

Ban đầu, hệ thống cung cấp số nguyên đầu tiên; người chơi sau đó đặt cược rằng số thứ hai sẽ lớn hơn hay nhỏ hơn số đầu tiên; sau khi người chơi đặt cược t token, hệ thống sẽ đưa ra số thứ hai. Nếu người chơi đoán đúng, hệ thống thưởng cho người chơi t token; ngược lại, trừ t token khỏi tài khoản của người chơi. Lưu ý: số token cược không được vượt quá số token người chơi đang có. Khi người chơi mất hết token, trò chơi kết thúc.

Đầu vào

Đầu vào ở dòng đầu tiên cho 2 số nguyên dương T và K (≤ 100), lần lượt là số token hệ thống tặng ban đầu và số lần trò chơi cần xử lý.

K dòng tiếp theo, mỗi dòng tương ứng một lần trò chơi, lần lượt đưa ra 4 số: n1 b t n2, trong đó n1 và n2 là hai số nguyên từ 0 đến 9 do hệ thống đưa ra (đảm bảo hai số khác nhau). b là 0 nếu người chơi cược số nhỏ hơn, là 1 nếu người chơi cược số lớn hơn. t là số token người chơi đặt cược, đảm bảo trong phạm vi số nguyên.

Đầu ra

Với mỗi lần trò chơi, đầu ra tương ứng theo các trường hợp sau (trong đó t là số token cược, x là số token người chơi đang giữ):

Người chơi thắng, xuất "Win t! Total = x."; Người chơi thua, xuất "Lose t. Total = x."; Người chơi cược vượt quá số token đang có, xuất "Not enough tokens. Total = x."; Người chơi mất hết token, xuất "Game Over." và kết thúc chương trình.

Mẫu đầu vào
100 4
8 0 100 2
3 1 50 1
5 1 200 6
7 0 200 8
Mẫu đầu ra
Win 100!  Total = 200.
Lose 50.  Total = 150.
Not enough tokens.  Total = 150.
Not enough tokens.  Total = 150.
Giải pháp bằng C++
#include <iostream>
using namespace std;

int main() {
    int initialTokens, gameCount;
    int firstNum, betType, betAmount, secondNum;
    
    // Đọc số token ban đầu và số lần trò chơi
    cin >> initialTokens >> gameCount;
    
    for (int round = 0; round < gameCount; round++) {
        // Đọc dữ liệu cho mỗi vòng chơi
        cin >> firstNum >> betType >> betAmount >> secondNum;
        
        // Kiểm tra nếu người chơi đã hết token
        if (initialTokens <= 0) {
            cout << "Game Over." << endl;
            return 0;
        }
        
        // Kiểm tra số token cược
        if (betAmount <= initialTokens) {
            // Xử lý trường hợp người chơi cược số lớn hơn
            if (betType == 1) {
                if (secondNum > firstNum) {
                    initialTokens += betAmount;
                    cout << "Win " << betAmount << "! Total = " << initialTokens << "." << endl;
                } else {
                    initialTokens -= betAmount;
                    cout << "Lose " << betAmount << ". Total = " << initialTokens << "." << endl;
                }
            } 
            // Xử lý trường hợp người chơi cược số nhỏ hơn
            else if (betType == 0) {
                if (secondNum < firstNum) {
                    initialTokens += betAmount;
                    cout << "Win " << betAmount << "! Total = " << initialTokens << "." << endl;
                } else {
                    initialTokens -= betAmount;
                    cout << "Lose " << betAmount << ". Total = " << initialTokens << "." << endl;
                }
            }
        } else {
            // Trường hợp không đủ token để cược
            cout << "Not enough tokens. Total = " << initialTokens << "." << endl;
        }
    }
    
    return 0;
}

Thẻ: thuật toán lập trình C++ mô phỏng trò chơi xử lý đầu ra

Đăng vào ngày 30 tháng 6 lúc 17:50