关注
#include <iostream>
#include <vector>
#include <sstream>
#include <queue>
using namespace std;
// split 函数 string 变 vector<int>
vector<int> getVec(string str) {
vector<int> res;
stringstream ss(str);
int tem;
while(ss >> tem)
res.push_back(tem);
return res;
}
int main() {
string str;
vector<vector<int>> grid;
while(getline(cin, str))
grid.push_back(getVec(str));
int m = grid.size(), n = grid[0].size(), start, tar, step = 0;
vector<vector<bool>> used(m, vector<bool>(n, false));
// 二维坐标转换成一维坐标,后面操作起来简单
for(int i=0; i<m; i++)
for(int j=0; j<n; j++) {
if(grid[i][j] == 2) start = i*n+j, used[i][j] = true;
if(grid[i][j] == 3) tar = i*n+j;
}
queue<int> que;
que.push(start);
vector<int> dx{0, 0, 1, -1};
vector<int> dy{1, -1, 0, 0};
while(!que.empty()) {
int len = que.size();
for(int i=0; i<len; i++) {
int cur = que.front();
if(cur == tar) {
cout << step << endl;
return 0;
}
que.pop();
for(int j=0; j<4; j++) {
int x = cur/n + dx[j], y = cur%n + dy[j];
if(x<0 || y<0 || x>=m || y>=n || grid[x][y] == 1 || used[x][y])
continue;
used[x][y] = true;
que.push(x*n+y);
}
}
step++;
}
return 0;
}
🤣参考这个
查看原帖
点赞 1
相关推荐
牛客热帖
更多
正在热议
更多
# 我来点评面试官 #
10811次浏览 85人参与
# 工作后,谈恋爱还和学生时代一样吗? #
39461次浏览 372人参与
# 京东开奖 #
447709次浏览 2503人参与
# 同bg的你秋招战况如何? #
167930次浏览 974人参与
# 职场破冰,你们都聊什么? #
28772次浏览 152人参与
# 今年秋招是回暖还是遇冷 #
21657次浏览 144人参与
# 360集团校招 #
3106次浏览 22人参与
# 阿里云工作体验 #
31858次浏览 108人参与
# 你的领导最像哪种动物,为什么? #
24183次浏览 134人参与
# 我的AI电子员工 #
21004次浏览 152人参与
# 三一集团提前批进度交流 #
40251次浏览 228人参与
# 毕业论文进行时 #
2464次浏览 43人参与
# 诺瓦星云求职进展汇总 #
225695次浏览 1732人参与
# 教师节,你送祝福了吗 #
11639次浏览 76人参与
# 来聊聊你目前的求职进展 #
686510次浏览 6921人参与
# 秋招开始捡漏了吗 #
63253次浏览 438人参与
# 你实习是赚钱了还是亏钱了? #
20836次浏览 190人参与
# 找工作八股要背到什么程度? #
12463次浏览 199人参与
# 上班摸鱼,你都在干些什么? #
29148次浏览 223人参与
# 用一句话形容你的团队氛围 #
13435次浏览 148人参与
# 三一重工求职进展汇总 #
22601次浏览 82人参与
# 你找工作是从容有余 or 匆忙滚爬? #
7162次浏览 73人参与
查看17道真题和解析