hdu 2147 博弈

  这个题目好玩,知道推算方法了以后,刚做完之前那个题,然后我就果断打表!MLE!然后我就输出了20*20的情况找找规律吧,我发现当n,m中只要有一个为偶数的时候先手就会赢。下面附上2段代码。

0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1    //这个是打表出来的20*20的值。n是行号,m是列号。
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 

打表代码

 1 #include <stdio.h>
 2 bool gird[2000+10][2000+10];//1代表必胜点 0代表必败点
 3 int main()
 4 {
 5     int i,j;
 6     int n,m;
 7     gird[2000][1]=0;
 8     for(i=2000;i>0;--i)
 9     {
10         for(j=1;j<=2000;++j)
11         {
12             gird[i][j]=0;
13             if( (gird[i+1][j]==0&&i+1<=2000) || (gird[i][j-1]==0&&j-1>=1) ||(gird[i+1][j-1]==0&&i+1<=2000&&j-1>=1) )
14                 gird[i][j]=1;
15         }
16     }
17 /*    while(scanf("%d%d",&n,&m)&&(n!=0||m!=0))
18     {
19         n=2000-n+1;
20         if(gird[n][m]==1)
21             printf("Wonderful!\n");
22         else
23             printf("What a pity!\n");
24 
25     }
26     */
27     for(i=1;i<=20;++i)
28         for(j=1;j<=20;++j)
29         {
30             i=2000-i+1;
31             printf("%d ",gird[i][j]);
32             if(j==20)
33                 printf("\n");
34         }
35 
36     return 0;
37 }

然后提交代码

 1 #include <stdio.h>
 2 int main()
 3 {
 4     int a,b;
 5     while(scanf("%d%d",&a,&b)&&(a!=0||b!=0))
 6     {
 7         if(a%2==0||b%2==0)
 8             printf("Wonderful!\n");
 9         else 
10             printf("What a pity!\n");
11     }
12     return 0;
13 }
原文地址:https://www.cnblogs.com/symons1992/p/2849599.html