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

硬币游戏1(博弈论入门题)

时间:2017-07-16 11:24:03      阅读:426      评论:0      收藏:0      [点我收藏+]

标签:style   blog   思想   bsp   挑战   规划   入门   amp   题意   

题目链接:挑战程序设计竞赛p305

题意:一开始有X枚硬币,有K种取法,a[1],a[2]......a[k],取走最后一枚硬币为胜利者,两个人取硬币,都以最优策略取硬币,Alice先取,问最终谁是胜利者。

动态规划的思想(轮到Alice取硬币):

1.剩下0枚硬币,Alice为必败态。

2.剩下i枚硬币,存在一种情况 i - a[ j ] 为必败态,Alice为必胜态。

3.剩下i枚硬币,任何情况 i - a[ j ] 为必胜态,Alice为必败态。

 1 void solve()
 2 {
 3     win[0]=false;//0枚,必败态 
 4     for(int i=1;i<=X;i++)
 5     {
 6         win[i]=false; 
 7         for(int j=1;j<=K;j++)//找到一种情况对手为必败态就OK 
 8         {
 9             win[i]|=(a[j]<=i&&!win[i-a[j]]);//如果对手是必败态,自己就是必胜态 
10         }
11     }
12 }

 

硬币游戏1(博弈论入门题)

标签:style   blog   思想   bsp   挑战   规划   入门   amp   题意   

原文地址:http://www.cnblogs.com/Leonard-/p/7189686.html

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