硬币游戏1(博弈论入门题)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了硬币游戏1(博弈论入门题)相关的知识,希望对你有一定的参考价值。
题目链接:挑战程序设计竞赛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(博弈论入门题)的主要内容,如果未能解决你的问题,请参考以下文章