请教一道c++编程题的算法思想
巧夺偶数。桌子上有25颗棋子,游戏双方轮流取子,每人每次最少取走一颗棋子,最多可取走3颗棋子。双方照这样取下去,直到取光所有的棋子。于是双方手中必然一方为偶数,一方为奇数...
巧夺偶数。桌子上有25颗棋子,游戏双方轮流取子,每人每次最少取走一颗棋子,
最多可取走3颗棋子。双方照这样取下去,直到取光所有的棋子。
于是双方手中必然一方为偶数,一方为奇数,偶数方为胜者。
有说是只要第二个人将报的数字总是报到4的倍数,第二个人必胜.
但这种算法不对啊 展开
最多可取走3颗棋子。双方照这样取下去,直到取光所有的棋子。
于是双方手中必然一方为偶数,一方为奇数,偶数方为胜者。
有说是只要第二个人将报的数字总是报到4的倍数,第二个人必胜.
但这种算法不对啊 展开
2个回答
展开全部
这是博弈算法。 自己百度下博弈策略
基础博弈
必败点(P点) :前一个选手(Previousplayer)将取胜的位置称为必败点
必胜点(N点) :下一个选手(Nextplayer)将取胜的位置称为必胜点。
(1) 所有终结点是必败点(P点);
(2) 从任何必胜点(N点)操作,至少有一种方法可以进入必败点(P点);
(3)无论如何操作, 从必败点(P点)都只能进入必胜点(N点).
步骤1:将所有终结位置标记为必败点(P点);
步骤2: 将所有一步操作能进入必败点(P点)的位置标记为必胜点(N点)
步骤3:如果从某个点开始的所有一步操作都只能进入必胜点(N点) ,则将该点标记为必败点(P点);
步骤4: 如果在步骤3未能找到新的必败(P点),则算法终止;否则,返回到步骤2。
基础博弈
必败点(P点) :前一个选手(Previousplayer)将取胜的位置称为必败点
必胜点(N点) :下一个选手(Nextplayer)将取胜的位置称为必胜点。
(1) 所有终结点是必败点(P点);
(2) 从任何必胜点(N点)操作,至少有一种方法可以进入必败点(P点);
(3)无论如何操作, 从必败点(P点)都只能进入必胜点(N点).
步骤1:将所有终结位置标记为必败点(P点);
步骤2: 将所有一步操作能进入必败点(P点)的位置标记为必胜点(N点)
步骤3:如果从某个点开始的所有一步操作都只能进入必胜点(N点) ,则将该点标记为必败点(P点);
步骤4: 如果在步骤3未能找到新的必败(P点),则算法终止;否则,返回到步骤2。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询