博弈知识入门引导
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 }
以上是关于博弈知识入门引导的主要内容,如果未能解决你的问题,请参考以下文章