http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3057
有豆类三个桩。TT和DD挑选任意数量的豆子从任何两堆轮流任何桩或相同的数字。谁拿到最后一个Bean将获胜。TT和DD是很聪明的。
#include<stdio.h> #define N 300+4 bool 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; }
版权声明:本文为博主原创文章,未经博主允许不得转载。
today lazy . tomorrow die .