博弈---ZOJ 3057 Beans Game(DP博弈)

来源:互联网 发布:淘宝视频制作 编辑:程序博客网 时间:2024/06/05 10:42

http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3057

有豆类三个桩。TT和DD挑选任意数量的豆子从任何两堆轮流任何桩或相同的数字。谁拿到最后一个Bean将获胜。TT和DD是很聪明的。


#include<stdio.h>  #define N 300+4bool dp[N][N][N]={0};//用bool比int省空间void Init(){int i,j,k,t;for(i=0;i<N;i++)for(j=0;j<N;j++)for(k=0;k<N;k++)if(dp[i][j][k]==0)//当前位于必败态,前一步为必胜态,取的方法如下{for(t=1;t+k<N;t++) //t从1开始dp[i][j][k+t]=1;for(t=1;t+j<N;t++)dp[i][j+t][k]=1;for(t=1;t+i<N;t++)dp[i+t][j][k]=1;for(t=1;t+i<N&&t+j<N;t++)dp[t+i][t+j][k]=1;for(t=1;t+j<N&&t+k<N;t++)dp[i][t+j][t+k]=1;for(t=1;t+i<N&&t+k<N;t++)dp[t+i][j][t+k]=1;}}int main(){Init();int a,b,c;while(scanf("%d%d%d",&a,&b,&c)!=EOF){printf("%d\n",dp[a][b][c]);}return 0;}


0 0
原创粉丝点击