博弈知识入门引导

Posted zhazhaacmer

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了博弈知识入门引导相关的知识,希望对你有一定的参考价值。

【转】ACM博弈知识汇总

https://www.cnblogs.com/kuangbin/archive/2011/08/28/2156426.html


举个栗子:

桌面上有N个小球,两个人轮流取,每人一次最多取不超过X (1<=X<n)个,取走最后一个小球的人获胜!

试问先手是否可以采取恰当的策略达到必赢的状态!可以的话输出yes,否则的话,输出no!

输入:

10 3

12 3

 输出

 yes

 no

 


 

 一种简洁的搜索方式:

技术分享图片技术分享图片

 

代码:

 1 #include <iostream>
 2 #include<stdio.h>
 3 #include<string.h>
 4 #include<algorithm>
 5 #include<math.h>
 6 using namespace std;
 7 
 8 bool fact(int n,int k)   //递归博弈代码
 9 {
10     if(n==0)return false;
11     if(n<=k)return true;
12     for(int i=1; i<=n&&i<=k; i++) //本次作出选择选取i个小球
13     {
14         if(fact(n-i,k)==false)//下一位再走一次false
15             return true;
16     }
17     return false;
18 }
19 
20 int main()
21 {
22     int n,k;
23     scanf("%d%d",&n,&k);
24     if(fact(n,k))
25         printf("yes
");
26     else
27         printf("no
");
28 
29     return 0;
30 }

 

以上是关于博弈知识入门引导的主要内容,如果未能解决你的问题,请参考以下文章

Python学习路线引导-Python入门基础

通过脚本片段绕过XSS防御

成都APP软件EXE开发:EXCEL VBA的基本知识和入门引导V2

博弈论入门之威佐夫博弈

博弈论之入门小结

博弈论经典入门