面对这个马匹游戏数据结构的问题。谁能解决这个问题?

时间:2017-08-04 14:16:11

标签: algorithm data-structures

enter image description here

#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”。

如何解决这个问题??

2 个答案:

答案 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"