我原来的代码是统计(n,m)共被翻转的多少次来判断的,后来经实践证明,if(n,m)为1 则 ALICE 0为BOB
附上俩份代码。。
#include <cstdio>
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int n,m;
scanf("%d%d",&n,&m);
int ans;
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
scanf("%d",&ans);
printf("%s\n",ans?"Alice":"Bob");
}
}
#include <cstdio>
#include <cstring>
#include <string>
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
const int maxn = 111;
string s;
int v[maxn][maxn];
int n,m;
int a[maxn][maxn];
int main()
{
//int n;
int T;
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&m);
int ans=0;
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
scanf("%d",&v[i][j]);
memset(a,0,sizeof(a));
a[0][0]=v[0][0];
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
if(i==0&&j==0) continue;
if(i==0)
{
if((a[i][j-1]+v[i][j])%2==0) a[i][j]=a[i][j-1];
else a[i][j]=a[i][j-1]+1;
}
else if(j==0)
{
if((a[i-1][j]+v[i][j])%2==0) a[i][j]=a[i-1][j];
else a[i][j]=a[i-1][j]+1;
}
else
{
if((a[i][j-1]+a[i-1][j]+v[i][j])%2==0) a[i][j]=a[i][j-1]+a[i-1][j];
else a[i][j]=a[i][j-1]+a[i-1][j]+1;
}
}
//puts("");
}
printf("%s\n",a[n-1][m-1]%2==0?"Bob":"Alice");
}
}