小火龙和小鹦鹉在一个 n 行 m 列的网格上玩守护者游戏,网格中未被分配守护者的单元格由 0 表示,而已被分配守护者的单元格由1表示。已知网格的初始状态,在游戏的每个回合中两人都必须增加一名守护者,并且新增加的守护者不能与已有守护者出现在同一行或者同一列,当他们中的一人无法增加守护者时,游戏结束,他输了。
小火龙和小鹦鹉轮流增加守护者,并且小火龙率先开始,假设两人都处于最佳策略,请问谁可以赢得游戏。
如果小火龙赢了游戏,则输出“A”,否则输出“V”(不带引号)。
1≤n,m≤50
我85pts的die码:
#include<bits/stdc++.h>
using namespace std;
int n,m,a[51][51];
bool f;
void cz(int x,int y){
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(i==x||j==y) a[i][j]=1;
}
}
return;
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>a[i][j];
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(a[i][j]==1) cz(i,j);
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(a[i][j]==0){
a[i][j]=1;
cz(i,j);
f=!f;
}
}
}
if(f) cout<<"A";
else cout<<"V";
return 0;
}