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
广告