题意:给定一个N*M 的网格,每个网格上有一个硬币,或上或下,游戏结束的条件为说有的硬币都朝上,选择一个以N,M为右下角,右上角为朝上硬币的矩形,使得里面所有的硬币都翻转,游戏结束的步数是奇数还是偶数
解题思路:典型的博弈问题,如果右下角为 朝上,则翻完所有的硬币必定为基数,不然则偶数
解题代码:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include <stdio.h> 2 #include <string.h> 3 #include <stdlib.h> 4 int a[105][105]; 5 int n , m ; 6 int main() 7 { 8 int t ; 9 scanf("%d",&t); 10 while(t--) 11 { 12 int n ,m ; 13 scanf("%d %d",&n,&m); 14 for(int i = 1;i <= n;i ++) 15 for(int j = 1;j <= m ;j ++ ) 16 scanf("%d",&a[i][j]); 17 if(a[n][m] == 0 ) 18 printf("Bob\n"); 19 else 20 printf("Alice\n"); 21 22 } 23 return 0 ; 24 }
没有梦想,何谈远方