#include<stdio.h>
#include<stdbool.h>
#include<malloc.h>
char* solve (int** A ) {
}
int main() {
int T;
scanf("%d", &T);
for(int t_i=0; t_i<T; t_i++)
{
int N;
scanf("%d", &N);
int i_A, j_A;
int **A = (int **)malloc(N*sizeof(int *));
for(i_A=0; i_A<N; i_A++)
{
A[i_A] = (int *)malloc(N*sizeof(int));
}
for(i_A=0; i_A<N; i_A++)
{
for(j_A=0; j_A<N; j_A++)
{
scanf("%d", &A[i_A][j_A]);
}
}
char* out_ = solve(A);
printf("%s", out_);
printf("\n");
}
}
爱丽丝和鲍勃正在玩游戏 ñ × ñ N×N板与马占据一些细胞。他们交替玩,爱丽丝开始游戏。 在一次行动中,玩家选择了一匹马 ( X , ÿ ) (x,y)坐标并将其移动到任一个 ( X - 2 , ÿ - 1 ) (x-2,y-1)或 ( X - 1 , ÿ - 2 ) (X-1,Y-2)。移动后,马应保持在矩阵的范围内。游戏一直持续到没有可能的移动。最后一名参加比赛的选手赢得比赛。 你需要找到游戏的赢家。
输入 第一行包含多个测试用例 Ť 那么,T Ť 随后是T游戏。 对于每个游戏第一行包含 ñ N(矩阵的尺寸)。 然后是矩阵描述。每个单元格值 一个 [ 一世 ] [ Ĵ ] 矩阵的[i] [j]表示它包含的马数。
输出 如果Alice赢了游戏则打印“ALICE”,否则打印“BOB”。
如何解决这个问题??
答案 0 :(得分:0)
希望它会有所帮助:
int c = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (A[i][j] > 0) {
x = i;
y = j;
int min1 = Math.min(x/2, y);
int min2 = Math.min(x, y/2);
c += A[i][j]*(Math.max(min1, min2));
}
}
}
if (c % 2 != 0) {
return "ALICE";
}
return "BOB";
答案 1 :(得分:0)
T = input()
for i in xrange(T):
N = input()
A = []
for j in xrange(N):
A.append(map(int, raw_input().split()))
HP=[]
x=0
for i in A:
y=0
for j in i:
if(j>0):
HP.append((x+1,y+1))
y=y+1
x=x+1
c=0
for i in HP:
x=i[0]
y=i[1]
flag=0
while True:
if(x-2>0 and y-1>0):
flag=1
c=c+1
elif (x-1>0 and y-2>0):
flag=1
c=c+1
if flag==1:
break
if(c%2==0):
print "BOB"
elif(c>0):
print "ALICE"