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

更新于:2022年3月3日

浏览量:192

开启你的职业生涯

完成课程获得认证

开始学习
广告