提出詳細


ソースコード

#include <stdio.h>

typedef struct
{
    int x;
    int y;
    int before;
} save;

save s[1000];

int main(void)
{
    int T = 0;
    int anslist[10000] = {0};
    int answercount = 0;
    scanf("%d", &T);
    for (int loop; loop < T; loop++)
    {
        int W = 0, H = 0;
        int board[11][11] = {0}; //y,x
        int x = 0, y = 0;
        int count = 0;
        int scount = 0;
        int anscount = 0;
        scanf("%d %d", &W, &H);
        for (int i = 0; i < H; i++)
        {
            for (int j = 0; j < W; j++)
            {
                scanf("%d", &board[i][j]);
                if (board[i][j] == 1)
                {
                    x = j;
                    y = i;
                }
            }
        }

        s[count].x = x;
        s[count].y = y;
        count++;

        while (1)
        {
            x = s[scount].x;
            y = s[scount].y;
            if (board[y][x] == 2)
            {
                while (1)
                {
                    scount = s[scount].before;
                    //printf("ans=%d %d\n", s[scount].x, s[scount].y);
                    anscount++;
                    if (scount == 0)
                    {
                        anslist[answercount] = anscount;
                        answercount++;
                        break;
                    }
                }
                break;
            }
            //printf("%d %d\n", x, y);
            if (x - 1 >= 0 && board[y][x - 1] != 3)
            {
                int flag = 0;
                for (int i = 0; i < count; i++)
                {
                    if (s[i].x == x - 1 && s[i].y == y)
                    {
                        flag = 1;
                        break;
                    }
                }
                if (flag != 1)
                {
                    s[count].x = x - 1;
                    s[count].y = y;
                    s[count].before = scount;
                    count++;
                }
            }
            if (x + 1 < W && board[y][x + 1] != 3)
            {
                int flag = 0;
                for (int i = 0; i < count; i++)
                {
                    if (s[i].x == x + 1 && s[i].y == y)
                    {
                        flag = 1;
                        break;
                    }
                }
                if (flag != 1)
                {
                    s[count].x = x + 1;
                    s[count].y = y;
                    s[count].before = scount;
                    count++;
                }
            }
            if (y - 1 >= 0 && board[y - 1][x] != 3)
            {
                int flag = 0;
                for (int i = 0; i < count; i++)
                {
                    if (s[i].x == x && s[i].y == y - 1)
                    {
                        flag = 1;
                        break;
                    }
                }
                if (flag != 1)
                {
                    s[count].x = x;
                    s[count].y = y - 1;
                    s[count].before = scount;
                    count++;
                }
            }
            if (y + 1 < H && board[y + 1][x] != 3)
            {
                int flag = 0;
                for (int i = 0; i < count; i++)
                {
                    if (s[i].x == x && s[i].y == y + 1)
                    {
                        flag = 1;
                        break;
                    }
                }
                if (flag != 1)
                {
                    s[count].x = x;
                    s[count].y = y + 1;
                    s[count].before = scount;

                    count++;
                }
            }
            scount++;
            if (scount == count)
            {
                anslist[answercount] = 0;
                answercount++;
                break;
            }
        }
    }

    for (int i = 0; i < answercount; i++)
    {
        printf("Case #%d:\n", i + 1);
        printf("%d\n", anslist[i]);
    }

    return 0;
}

提出情報

提出時間 2019-11-30 17:18:29
問題 G - ボルダリング
ユーザ名 NekoZ
状態 正解
正解率 50/50
提出出力結果

テストケース情報

# 状態 詳細情報
テストケース 1 正解 詳細を見る
テストケース 2 正解 詳細を見る
テストケース 3 正解 詳細を見る
テストケース 4 正解 詳細を見る
テストケース 5 正解 詳細を見る
テストケース 6 正解 詳細を見る
テストケース 7 正解 詳細を見る
テストケース 8 正解 詳細を見る
テストケース 9 正解 詳細を見る
テストケース 10 正解 詳細を見る
テストケース 11 正解 詳細を見る
テストケース 12 正解 詳細を見る
テストケース 13 正解 詳細を見る
テストケース 14 正解 詳細を見る
テストケース 15 正解 詳細を見る
テストケース 16 正解 詳細を見る
テストケース 17 正解 詳細を見る
テストケース 18 正解 詳細を見る
テストケース 19 正解 詳細を見る
テストケース 20 正解 詳細を見る
テストケース 21 正解 詳細を見る
テストケース 22 正解 詳細を見る
テストケース 23 正解 詳細を見る
テストケース 24 正解 詳細を見る
テストケース 25 正解 詳細を見る
テストケース 26 正解 詳細を見る
テストケース 27 正解 詳細を見る
テストケース 28 正解 詳細を見る
テストケース 29 正解 詳細を見る
テストケース 30 正解 詳細を見る
テストケース 31 正解 詳細を見る
テストケース 32 正解 詳細を見る
テストケース 33 正解 詳細を見る
テストケース 34 正解 詳細を見る
テストケース 35 正解 詳細を見る
テストケース 36 正解 詳細を見る
テストケース 37 正解 詳細を見る
テストケース 38 正解 詳細を見る
テストケース 39 正解 詳細を見る
テストケース 40 正解 詳細を見る
テストケース 41 正解 詳細を見る
テストケース 42 正解 詳細を見る
テストケース 43 正解 詳細を見る
テストケース 44 正解 詳細を見る
テストケース 45 正解 詳細を見る
テストケース 46 正解 詳細を見る
テストケース 47 正解 詳細を見る
テストケース 48 正解 詳細を見る
テストケース 49 正解 詳細を見る
テストケース 50 正解 詳細を見る