poj 1979 迷宫搜索
2014-07-09 16:33
323 查看
题意:区域有两种标记,点和井号,不能触碰井号。给定一个起始点,问从其出发最多能覆盖多大面积。
思路:搜索,深搜or广搜
广搜:
深搜:
思路:搜索,深搜or广搜
广搜:
#include <stdio.h> #include <string.h> #define N 23 char s ; int flag ,q[N*N][2];//flag为标记数组,搜索到的区域标记为1 int round[4][2] = {-1,0,0,1,1,0,0,-1}; int n,m; int check(int x,int y){ if(x<0||y<0||x>=n||y>=m) return 0; if(flag[x][y] || s[x][y]!='.') return 0; return 1; } void bfs(int x,int y){ int front,rear,i; front = rear = -1; q[++rear][0] = x; q[rear][1] = y; while(front < rear){ int nowx = q[++front][0]; int nowy = q[front][1]; for(i = 0;i<4;i++){ int xx = nowx+round[i][0]; int yy = nowy+round[i][1]; if(check(xx,yy)){ q[++rear][0] = xx; q[rear][1] = yy; flag[xx][yy] = 1; } } } } int main(){ freopen("a.txt","r",stdin); while(scanf("%d %d",&m,&n) &&n &&m){ int i,j,x,y,sum = 0; memset(flag,0,sizeof(flag)); for(i = 0;i<n;i++){ scanf("%s",s[i]); for(j = 0;j<m;j++) if(s[i][j] == '@'){ x = i; y = j; } } flag[x][y] = 1; bfs(x,y); for(i = 0;i<n;i++) for(j = 0;j<m;j++) sum += flag[i][j]; printf("%d\n",sum); } return 0; }
深搜:
#include <stdio.h> #include <string.h> int m,n; int x,y; char s[23][23]; int flag[23][23]; int around[4][2] = { {-1,0},{0,-1},{1,0},{0,1} }; int dfs(int x,int y){ int i,sum = 0; flag[x][y] = 0; for(i = 0;i<4;i++){ int xx = x+around[i][0]; int yy = y+around[i][1]; if(flag[xx][yy]) sum += dfs(xx,yy); } return sum+1; } int main(){ freopen("a.txt","r",stdin); while(scanf("%d %d",&m,&n) && n && m){ int i,j; memset(flag,0,sizeof(flag)); for(i = 1;i<=n;i++){ getchar(); for(j=1;j<=m;j++){ s[i][j] = getchar(); if(s[i][j] == '.') flag[i][j] = 1; if(s[i][j] == '@'){ x = i; y = j; } } } printf("%d\n",dfs(x,y)); } }
相关文章推荐
- POJ 3984 迷宫问题(广度搜索)
- K - 迷宫问题 POJ - 3984(广度搜索)
- POJ 3984 迷宫问题 搜索题解
- poj 3984 迷宫问题 —— 典型搜索--DFS递归
- POJ-1979(搜索水题)
- poj 1979 搜索
- POJ 1979 :Red and Black 搜索
- poj_3984_迷宫问题(搜索)
- POJ-3083 Children of the Candy Corn 解题报告(搜索) 广搜深搜走迷宫
- [kuangbin]专题一 简单搜索 K - 迷宫问题 POJ - 3984
- POJ 1979 类似迷宫 BFS
- poj 3984 迷宫问题 BFS 图的广度优先搜索
- 深度优先搜索【POJ 1979】
- (转)POJ 2049 走迷宫选取经过门最少的路线 BFS搜索
- POJ 2049 走迷宫选取经过门最少的路线 BFS搜索
- poj 1979 简单的搜索
- POJ 2049 走迷宫选取经过门最少的路线 BFS搜索
- POJ 1979 基础搜索 DFS\BFS 一
- POJ 3984 迷宫问题(记录路径的搜索)
- POJ 3984 迷宫问题(kuangbin带你飞 专题一:简单搜索)