brucehb


私信TA

用户名:brucehb

访问量:2901

签 名:

等  级
排  名 1429
经  验 2778
参赛次数 0
文章发表 27
年  龄 0
在职情况 学生
学  校 北航
专  业

  自我简介:

解题思路:

注意事项:

参考代码:


#include<bits/stdc++.h>

using namespace std;


class Node {

public:

    int x, y, step;

    Node(int i, int j, int s) {

        x = i;

        y = j;

        step = s;

    }

};


Node start(0, 0, 0);

Node dest(0, 0, 0);

bool visit[201][201] = {false};

char a[201][201];

int dx[4] = {1, 0, -1, 0};

int dy[4] = {0, 1, 0, -1};


int main()

{

    int t, r, c;

    cin >> t;

    for (int k = 0; k < t; k++) {

        cin >> r >> c;

        for (int i = 0; i < r; i++) {

            for (int j = 0; j < c; j++) {

                cin >> a[i][j];

                if (a[i][j] == 'S') {

                    start.x = i;

                    start.y = j;

                    start.step = 0;

                }

                else if (a[i][j] == 'E') {

                    dest.x = i;

                    dest.y = j;

                    dest.step = 0;

                }

            }

        }

        

        queue<Node> q;

        bool found = false;

        int res = 0;

        q.push(start);

        

        while (!q.empty()) {

            Node front = q.front();

            q.pop();

            if (front.x == dest.x && front.y == dest.y) {

                found = true;

                res = front.step;

                break;

            }

            

            for (int d = 0; d < 4; d++) {

                int tx = front.x + dx[d];

                int ty = front.y + dy[d];

                if (tx >= 0 && tx < r && ty >= 0 && ty < c 

                    && !visit[tx][ty] && a[tx][ty] != '#') {

                    visit[tx][ty] = true;

                    q.push(Node(tx, ty, front.step + 1));

                }

            }

        }

        if (found) {

            cout << res << endl;

        } else {

            cout << "oop!" << endl;

        }

        memset(visit, false, sizeof(visit));

    }

    return 0;

}


 

0.0分

6 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区