📝 博弈论
99篇技术文档📅  最后修改于: 2021-09-24 03:21:04        🧑  作者: Mango
给定四个整数a、b、c和d。球员A和B尝试点球。 A 击中目标的概率为a / b而 B 击中目标的概率为c / d。先点球的玩家获胜。任务是找出 A 赢得比赛的概率。例子:Input:a = 1, b = 3, c = 1, d = 3Output:0.6Input:a = 1, b = 2, c = 10, d = 11Output:0.52381编程需要懂一点英语方法:如果我们考虑变量K = ...
📅  最后修改于: 2021-09-24 03:21:13        🧑  作者: Mango
Minimax 是一种回溯算法,用于决策制定和博弈论,以在假设您的对手也以最佳方式下棋的情况下为玩家找到最佳走法。广泛应用于二人回合制游戏,如井字游戏、西洋双陆棋、棋盘棋、国际象棋等。在 Minimax 中,这两个玩家被称为最大化者和最小化者。最大化器试图获得尽可能高的分数,而最小化器则试图做相反的事情并获得尽可能低的分数。每个董事会状态都有一个与之相关的值。在给定状态下,如果最大化者占上风,则棋...
📅  最后修改于: 2021-09-24 03:21:20        🧑  作者: Mango
犯罪团伙的两名成员被捕并入狱。每个囚犯都被单独监禁,无法与其他人交流。检察官缺乏足够的证据以对主要指控定罪。他们希望两人都能以较轻的罪名被判入狱一年。同时,检察官为每个囚犯提供一笔交易。每个囚犯都有机会:通过作证对方犯罪来背叛对方,或者通过保持沉默与对方合作。优惠是:如果A和B都背叛了对方,他们每个人都会服刑2年如果 A 背叛 B 而 B 保持沉默,A 将被释放,B 将服刑 3 年(反之亦然)如果...
📅  最后修改于: 2021-09-24 03:21:27        🧑  作者: Mango
游戏规则游戏将在两个人之间进行(在这个程序中,人与计算机之间)。其中一位玩家选择“O”,另一位玩家选择“X”来标记各自的单元格。游戏从其中一名玩家开始,当其中一名玩家有一整行/列/对角线填充他/她各自的字符(“O”或“X”)时,游戏结束。如果没有人获胜,则称该游戏为平局。执行在我们的程序中,计算机和人类采取的动作是随机选择的。我们为此使用 rand()函数。程序中还能做什么?由于移动是随机选择的,...
📅  最后修改于: 2021-09-24 03:21:34        🧑  作者: Mango
给定一排银币,其中有一个特殊的金币。两名玩家玩游戏,每走一步,玩家必须从行的左端或右端取出一枚硬币,取出特殊硬币的玩家赢得游戏。任务是找到游戏的赢家。例子:Input:str = “GSSS”Output:FirstThe first player directly removes the special gold coin.Input:str = “SGS”Output:SecondIrresp...
📅  最后修改于: 2021-09-24 04:56:53        🧑  作者: Mango
有 N 个孩子坐在 N 把椅子上,围成一圈。椅子从 1 到 N 编号。游戏开始循环,从第一把椅子开始数孩子。一旦计数达到 K,那个孩子就离开游戏,移开他/她的椅子。游戏再次开始,从圆圈中的下一张椅子开始。最后留在圆圈中的孩子是赢家。找到赢得比赛的孩子。例子:我们已经讨论了约瑟夫斯问题的递归解决方案。给定的解决方案比不适合大输入的 Josephus 解决方案的递归解决方案更好,因为它会导致堆栈溢出。...
📅  最后修改于: 2021-09-24 04:57:01        🧑  作者: Mango
给定一个整数N,找出将N更改为1的最少操作次数。如果不可能,则打印-1。一种操作定义为将N转换为数字2*N或将N转换为数字N/10(仅当 N 可被 10 整除时)。例子:Input:N = 50Output:3Explanation:N can be converted to 1 in 3 steps as follows:-> Firstly, multiply N by 2 and chang...
📅  最后修改于: 2021-09-24 04:57:08        🧑  作者: Mango
两个玩家A和B正在互相玩 NIM 游戏。两者都发挥最佳。玩家A开始游戏。任务是找到打1个移动方式的编号为确保作为一个成功的策略如果可能的话,否则输出-1。例子:Input:arr[] = {1, 2, 3}Output:-1There is no winning strategy for A no matter how optimally he plays.Input:arr[] = {2, 4,...
📅  最后修改于: 2021-09-24 04:57:16        🧑  作者: Mango
给定一个维度为N*M的二维数组arr[][],表示一个扫雷矩阵,其中每个单元格包含范围[0, 9]中的一个整数,表示其自身和与其相邻的所有八个单元格的数量,任务是解开扫雷舰并揭开矩阵中的所有地雷。为包含地雷的单元格打印“X”,为所有其他空单元格打印“_”。如果无法解决扫雷艇,则打印“-1”。例子:Input:arr[][] ={{1, 1, 0, 0, 1, 1, 1},{2, 3, 2, 1, ...
📅  最后修改于: 2021-09-24 04:57:24        🧑  作者: Mango
给定一个由小写字母组成的字符串。游戏规则:玩家可以选择一对相似的连续字符并删除它们。有两个玩家在玩游戏,最后一步的玩家获胜。任务是找到获胜者,如果 A 先走并且双方都发挥最佳。例子:方法:我们可以使用堆栈来简化问题。每次我们遇到一个与堆栈顶部的字符不同的字符,我们将其添加到堆栈中。如果栈顶和下一个字符匹配,我们从栈中弹出字符并增加计数。最后,我们只需要通过检查 count%2 来看看谁赢了。下面是...
📅  最后修改于: 2021-09-24 04:57:32        🧑  作者: Mango
算法的分类方法有很多种,其中一些如下所示:实施方法设计方法其他分类按实施方式分类:1.递归或迭代递归算法是一种重复调用自身直到满足基本条件的算法。它是 C、C++ 等函数式编程语言中常用的方法。迭代算法使用循环等结构,有时使用堆栈和队列等其他数据结构来解决问题。有些问题适合递归,有些则适合迭代。例如,在递归实现中可以很容易地理解河内塔问题。每个递归版本都有一个迭代版本,反之亦然。2. 程序性或声明...
📅  最后修改于: 2021-09-24 04:57:41        🧑  作者: Mango
给定一个骑士的当前位置为 (i, j),找出骑士在 N 次移动后(在 10 x 10 的棋盘中)访问过的不同可能位置的数量。例子:Input:i = 3, j = 3, n = 1Output:9The Knight is initially at position [3][3]. After one move it can visit 8 more cellsInput:i = 3, j = 3...
📅  最后修改于: 2021-09-24 04:57:48        🧑  作者: Mango
先决条件:博弈论中的极小极大算法如上一篇文章所示,每个叶节点都有一个与之关联的值。我们已经将这个值存储在一个数组中。但在现实世界中,当我们创建一个程序来玩井字游戏、国际象棋、西洋双陆棋等时,我们需要实现一个函数,根据棋子在棋盘上的位置计算棋盘的价值。这个函数通常被称为评估函数。它有时也称为启发式函数。对于每种类型的游戏,评估函数都是独一无二的。在这篇文章中,讨论了 Tic-Tac-Toe 游戏的评...
📅  最后修改于: 2021-09-24 04:57:56        🧑  作者: Mango
给定一个由N 个数字组成的数组。两个玩家X和Y玩一个游戏,其中每一步都有一个玩家选择一个数字。一个号码只能选择一次。选择完所有数字后,如果X和Y收集的数字之和的绝对差能被4整除,则玩家X获胜,否则Y获胜。注意:玩家 X 开始游戏,并在每一步都优化选择数字。例子:Input:a[] = {4, 8, 12, 16}Output:XX chooses 4Y chooses 12X chooses 8Y...
📅  最后修改于: 2021-09-24 04:58:04        🧑  作者: Mango
给定一个二进制字符串S。任务是当两个玩家根据给定条件使用字符串以最佳方式玩游戏时确定游戏的获胜者:玩家 1 总是先开始。两个玩家轮流选择一整块连续的相等字符并将它们从给定的二进制字符串S 中删除。玩家 1 只能选择奇数个连续相等的字符,玩家 2 只能选择偶数个连续相等的字符。只有在无法选择任何东西时,玩家才可以不选择任何东西并将其视为自己的回合。删除所有字符后,得分最高的玩家获胜,如果得分相等则打...