当前位置: 首页 > 知识库问答 >
问题:

计算RPS游戏的最大胜数

彭存
2023-03-14

我需要帮助写一些代码,计算最大可能的胜利在N游戏的岩石剪刀纸。

给我的是数字N,这是岩石纸剪刀游戏的数量,后面是N组整数(1,2,3),每个都链接到岩石,纸或剪刀。但是,我们不知道哪个数字链接到每个选项。我需要帮助计算第一个人可以赢的最多游戏数。

共有1个答案

胥良平
2023-03-14

好吧,让我们考虑一下如何对值进行排序的可能情况。我们可以构造一个环,其中每个数都输给下一个值。

  • |1松开|2:|2不能对|1松开,因此它只能对|3松开,而|3必须对|1松开,因此1<2<3<1,其中A 表示“A松开|B”
  • 2对1松动:1不能对2松动,因此必须对3松动,必须对2松动,因此1>2>3>1,其中A>B表示“A对B获胜”

除了这两个,没有其他的可能性,因为每个号码必须在两个号码池中分配一个“赢”和一个“输”号码。所以我们有两种可能将数字排序为赢/输条件。

int[] A = readPlayerOne();
int[] B = readPlayerTwo();

int draws = 0;
int wins = 0;

for(int i = 0; i < N; i++)
{
    if(A[i] == B[i])
        draws++;
    else if(A[i] - 1 == B[i] || A[i] == 1 && B[i] == 3)
        //wins according to the first configuration
        wins++;
}

return max(N - draws - wins, wins);

 类似资料:
  • 谁能告诉我代码出了什么问题吗?

  • 你好,我正在编写一个2D游戏,我已经找到了几种计算每秒帧数的方法,但我还没有真正理解架构规则,其中之一是: 我无法理解的是,渲染屏幕需要一些时间,所以我应该将这部分放在循环的绝对末端(在渲染获得输入等(绝对末端)之后): 所以基本上在游戏循环开始时,我得到开始时钟,然后我运行每个函数,例如移动碰撞渲染等,然后我评估增量时钟并在此基础上计算fps?有很多fps计算“公式”,但我需要一个真正的程序架构

  • 问题内容: 在编写动画和小游戏时,我已经知道我依靠这种方法告诉操作系统什么时候我的应用程序不需要任何CPU,并以此来使程序以可预测的速度前进,这具有不可思议的重要性。 我的问题是JRE在不同的操作系统上使用了不同的方法来实现此功能。在基于UNIX(或受影响的)的OS:例如Ubuntu和OS X上,底层的JRE实现使用功能良好且精确的系统将CPU时间分配给不同的应用程序,从而使我的2D游戏流畅无延迟

  • 问题内容: 我正在尝试处理一些观看狂欢的统计信息,我想找出 最长的狂欢 连胜纪录( 暴跌 是指多个节目以优惠的方式观看,一个又一个,相距不超过2个小时)。数据如下所示: sqlfiddle 在此示例中,用户2持续了6个小时的狂欢,后来又持续了2个小时。 我想要的最终结果是这样的: 可以直接在数据库中计算吗? 问题答案: 这是识别数据中的序列/条纹的问题。我这样做的首选方式是, 使用LAG功能识别每

  • 编辑:这个问题不是重复什么是游戏2048的最优算法? 这个问题问“赢得比赛的最好方法是什么?” 这个问题问‘我们如何计算出游戏的复杂性?' 这让我想到了它的复杂性。对于像国际象棋这样的确定性游戏,它有可能(在理论上)计算出所有导致胜利状态的可能的走法,并向后工作,选择保持导致结果的最佳走法。我知道这导致了大量可能的移动(在宇宙中原子数量范围内的东西)…但2048年是不是比较复杂? PsudoCod

  • 我正在使用JavaScript中的套接字io创建一个多人游戏。除了客户端插值之外,游戏目前的工作非常完美。现在,当我从服务器获得一个数据包时,我只需将客户端的位置设置为服务器发送的位置。以下是我尝试做的: 所以我设定了球员的目标位置。然后在玩家更新方法中我简单地做了这样的操作: 这基本上使玩家以固定的速度向目标的方向移动。问题是玩家在下一个信息从服务器到达之前或之后到达目标。 编辑:我刚刚读了Ga