C++程式:計算擲骰子游戲中兩位玩家獲勝或平局的可能性
假設我們有兩個數字a和b。阿瑪爾和比馬爾正在玩一個遊戲。首先,他們每個人寫下1到6之間的一個整數,然後擲骰子。寫下的數字更接近骰子點數的玩家贏得這一輪;如果兩者差值相同,則為平局。如果阿瑪爾寫下數字a,比馬爾寫下數字b,那麼我們必須計算阿瑪爾獲勝的可能性數量、平局數量和比馬爾獲勝的可能性數量。
因此,如果輸入為a = 2;b = 4,則輸出為[2, 1, 3],這意味著阿瑪爾有2種獲勝方式。如果骰子顯示3,則為平局。
步驟
為了解決這個問題,我們將遵循以下步驟:
s1 := 0 s2 := 0 s3 := 0 if (a + b) mod 2 is same as 0, then: s2 := 1 if a is same as b, then: s2 := 6 otherwise when a > b, then: s1 := 6 - ((a + b) / 2) Otherwise s1 := (a + b - s2 - 1) / 2 s3 := 6 - s1 - s2 print s1, s2 and s3
示例
讓我們來看下面的實現,以便更好地理解:
#include <bits/stdc++.h> using namespace std; void solve(int a, int b) { int s1 = 0, s2 = 0, s3 = 0; if ((a + b) % 2 == 0) s2 = 1; if (a == b) s2 = 6; else if (a > b) s1 = 6 - ((a + b) / 2); else s1 = (a + b - s2 - 1) / 2; s3 = 6 - s1 - s2; cout << s1 << ", " << s2 << ", " << s3 << endl; } int main() { int a = 2; int b = 4; solve(a, b); }
輸入
2, 4
輸出
2, 1, 3
廣告