Jelly
在遍历一张地图,求最短路径的时候,最简便的方法就是用
bfs
来写
代码:
// Created by CAD on 2020/1/18.
#include <bits/stdc++.h>
#define mst(name, value) memset(name,value,sizeof(name))
using namespace std;
char a[105][105][105];
int dx[7]={0,1,0,0,-1,0,0};
int dy[7]={0,0,1,0,0,-1,0};
int dz[7]={0,0,0,1,0,0,-1};
int dp[105][105][105];
int vis[105][105][105];
struct node{
int x,y,z,d;
};
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
int n;
cin>>n;
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)
for(int k=1;k<=n;++k)
cin>>a[i][j][k];
mst(dp,-1);
queue<node> q;
q.push({1,1,1,1});
vis[1][1][1]=dp[1][1][1]=1;
while(!q.empty())
{
node now=q.front(); q.pop();
for(int i=1;i<=6;++i)
{
int x=now.x+dx[i],y=now.y+dy[i],z=now.z+dz[i];
if(x<1||x>n||y<1||y>n||z<1||z>n||a[x][y][z]=='*'||vis[x][y][z]) continue;
vis[x][y][z]=1;
dp[x][y][z]=1+now.d;
q.push({x,y,z,1+now.d});
}
}
cout<<dp[n][n][n]<<endl;
return 0;
}
CAD加油!欢迎跟我一起讨论学习算法,QQ:1401650042