目录
P3206 Dungeon Master
这题是一个三维迷宫,其中用‘.’表示空地,‘#’表示障碍物,‘S’表示起点,‘E’表示终点,求从起点到终点的最小移动次数,解法和二维的类似,只是在行动时除了东南西北移动外还多了上下。可以上下左右前后移动,每次都只能移到相邻的空位,每次需要花费一分钟,求从起点到终点最少要多久。
- 分析
最少步数,考虑bfs,三维使用偏移数组
点击查看代码
P3207 Lake Counting
有一块N×M的土地,雨后积起了水,有水标记为‘W’,干燥为‘.’。八连通的积水被认为是连接在一起的。
请求出院子里共有多少水洼?
点击查看代码
#include<iostream>
using namespace std;
const int N=110;
char s[N][N];
bool st[N][N];
int n,m,ans;
int d[][2]={-1,-1, -1,0, -1,1, 0,-1, 0,1, 1,-1, 1,0,1,1};
void dfs(int x,int y){
st[x][y] = 1;
for(int i=0; i<8; i++){
int a=x+d[i][0], b=y+d[i][1];
if(a<0||a>=n||b<0||b>=m) continue;
if(s[a][b]=='.' || st[a][b]) continue;
dfs(a, b);
}
}
int main(){
cin>>n>>m;
for(int i=0; i<n; i++) cin>>s[i];
for(int i=0; i<n; i++)
for(int j=0; j<m; j++)
if(s[i][j]=='W' && !st[i][j]){ dfs(i,j); ans ++; }
cout<<ans;
return 0;
}
P3208 The Castle
点击查看代码
P896 仙岛求药
点击查看代码
P429 【基础】走迷宫
点击查看代码
P2465 迷宫问题
点击查看代码
P952 【入门】算24点
点击查看代码