码迷,mamicode.com
首页 > 其他好文 > 详细

博弈论

时间:2015-01-30 22:25:50      阅读:243      评论:0      收藏:0      [点我收藏+]

标签:

(1)巴什博弈

有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜。

这个游戏是有规律的,并且每个人都采取理智最优的话,游戏一开始就决定了胜负。

与之类似的是报数,从1开始报,最少报数加一个,最多报数加3个,谁先报到20谁赢。

第一个人无论是报1,2,3,第二个人每次取4的倍数都是可以的。如此往复一定是第二个人赢。

即存在公式:N=(K+1)*X+M

在本例中K=3,N=20,那么X=5,M=0,如此一来一定是第二个人赢,而如果M!=0,则第一个人报M,第二个人无论报多少,第一个人再重新报M+(K+1),如此第一个人是必胜的。

例子:

http://acm.hdu.edu.cn/showproblem.php?pid=4764

代码:

 1 #include<iostream>
 2 using namespace std;
 3 
 4 int main()
 5 {
 6     int N,K;
 7     while(scanf("%d%d",&N,&K))
 8     {
 9         if(N==0)break;
10         else
11         {
12             if((N-1)%(K+1)==0)
13                 printf("Jiang\n");
14             else
15                 printf("Tang\n");
16         }
17     }
18     return 0;
19 }

 

博弈论

标签:

原文地址:http://www.cnblogs.com/holyprince/p/4263245.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!