您的位置:首页 > 教育 > 培训 > 移动端原型_怎样开网上商城_自己在家做电商_深圳排名seo

移动端原型_怎样开网上商城_自己在家做电商_深圳排名seo

2025/7/18 13:13:08 来源:https://blog.csdn.net/2301_81772249/article/details/146054583  浏览:    关键词:移动端原型_怎样开网上商城_自己在家做电商_深圳排名seo
移动端原型_怎样开网上商城_自己在家做电商_深圳排名seo

这道题打眼一看又是找最短路径,所以我们还是用BFS

我们还是老样子,定义方向向量,然后用dfs遍历可以走的路径 把每个点的最短路径都标上号

最后我们再遍历存储最短路径的二维数组,我们把走到的出口全部计起来,然后找出路径最短的出口 打印

#include <iostream>
#include <queue>
#include <cstring>
using namespace std;
const int N = 35;
int dx[] = { 0, 0, 1, -1 };
int dy[] = { 1, -1, 0, 0 };
char a[N][N];
int n, m, x, y;
int path[N][N];
typedef pair<int, int> PII;
void bfs()
{queue<PII> q;q.push({ x,y });path[x][y] = 0;while (q.size()){auto t = q.front(); q.pop();int px = t.first; int py = t.second;for (int i = 0; i <= 3; i++){int x = px + dx[i]; int y = py + dy[i];if (x > n || x<1 || y>m || y < 1) continue;if (path[x][y] != -1) continue;if (a[x][y] == '*') continue;path[x][y] = path[px][py] + 1;if (a[x][y] != 'e') q.push({ x,y });}}
}
int main()
{memset(path, -1, sizeof path);cin >> n >> m;for (int i = 1; i <= n; i++){for (int j = 1; j <= m; j++){cin >> a[i][j];if (a[i][j] == 'k'){x = i;y = j;}}}bfs();int cnt = 0, ret = 1e9;for (int i = 1; i <= n; i++){for (int j = 1; j <= m; j++){if (a[i][j] == 'e' && path[i][j] != -1){ret = min(path[i][j], ret);cnt++;}}}if (cnt == 0) cout << -1 << endl;else{cout << cnt << " " << ret << endl;}return 0;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com