FZU1019

Posted dlvguo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FZU1019相关的知识,希望对你有一定的参考价值。

思路:记录猫和老鼠的坐标,模拟移动即可。判断猫永远无法抓住老鼠,就给一个数超过了这个数就跳出。题目链接

PS:一个大坑,多组数据的时候中间有回车间隔,不吸了这个回车就WA。

#include <iostream>
using namespace std;

char map[12][12];
//0 上 1右 2下 3左
int dir[4][2] = {{-1, 0}, {0, 1}, {1, 0}, {0, -1}};

struct Animal
{
    int x, y;
    int _dir;
};

int main()
{
    int n;
    scanf("%d", &n);
    int sum;
    Animal cat, mouse;
    while (n--)
    {
        getchar(); //注意细节 每行多了一个回车 FUCK
        sum = 0;
        for (int i = 1; i < 11; i++)
        {
            for (int j = 1; j < 11; j++)
            {
                scanf("%c", &map[i][j]);
                if (map[i][j] == c)
                {
                    cat.x = i;
                    cat.y = j;
                    cat._dir = 0;
                }
                if (map[i][j] == m)
                {
                    mouse.x = i;
                    mouse.y = j;
                    mouse._dir = 0;
                }
            }
            getchar();
        }

        int _x, _y;
        while (cat.x != mouse.x || cat.y != mouse.y)
        {
            //获取猫一下步坐标 越界或者碰见障碍就改方向
            _x = cat.x + dir[cat._dir][0];
            _y = cat.y + dir[cat._dir][1];
            if (_x < 1 || _y < 1 || _x > 10 || _y > 10 || map[_x][_y] == *)
            {
                cat._dir++;
                cat._dir %= 4;
            }
            else
            {
                cat.x = _x;
                cat.y = _y;
            }
            //获取猫一下步坐标 越界或者碰见障碍就改方向
            _x = mouse.x + dir[mouse._dir][0];
            _y = mouse.y + dir[mouse._dir][1];
            if (_x < 1 || _y < 1 || _x > 10 || _y > 10 || map[_x][_y] == *)
            {
                mouse._dir++;
                mouse._dir %= 4;
            }
            else
            {
                mouse.x = _x;
                mouse.y = _y;
            }
            sum++;
            //超过500次 认为无法抓到
            if (sum > 500)
            {
                sum = 0;
                break;
            }
        }
        cout << sum << endl;
    }
}

 

以上是关于FZU1019的主要内容,如果未能解决你的问题,请参考以下文章

FZU1004-Number Triangle经典动归题,核心思路及代码优化

2017福建省赛 FZU2272~2283

FZU 2169 shadow

FZU 2020 组合 (Lucas定理)

Android:将 savedInstanceState 与片段一起使用

FZU 2122 又见LKity