poj2386 DFS
2017-08-29 21:10
218 查看
深度优先搜索
核心的dfs程序就是每遇到一个W首先将它变为.然后扩展到周围8个位置坐标检验是否为W 若为W就继续搜索 直至周围都是. 算作一次dfs 最后统计dfs的次数
需要注意的是输入 可以直接输入字符串;或者按照字符输入,但要在每一行末尾接收一个回车
#include <stdio.h>
int N,M;
char field[200][200];
/*void dfs(int x, int y){
field[x][y]='.';
for(int dx=-1;dx<=1;dx++){
for(int dy=-1;dy<=1;dy++){
int nx=x+dx,ny=y+dy;;
if((0<=nx)&&(nx<N)&&(0<=ny)&&(ny<M)&&(field[nx][ny]=='W')){
dfs(nx,ny);
}
}
}
return ;
}
int main()
{
int count=0,i,j;
scanf("%d%d",&N,&M);
for(i=0;i<N;i++)
scanf("%s",field[i]);
for(i=0;i<N;i++){
for(j=0;j<M;j++){
if(field[i][j]=='W'){
dfs(i,j);
count++;
}
}
}
printf("%d\n",count);
return 0;
}*/
void dfs(int x,int y){
int nx,ny,dx,dy;
field[x][y]='.';
for(dx=-1;dx<=1;dx++){
for(dy=-1;dy<=1;dy++){
nx=x+dx;
ny=y+dy;
if(0 <= nx && nx <
N && 0 <= ny && ny <
M && field[nx][ny] ==
'W'){
dfs(nx,ny);
}
}
}
}
int main(){
char ch;
int i,j,ans =
0;
scanf("%d%d",&N,&M);
for(i=0;i<N;i++){
for(j=0;j<M;j++){
scanf("%c",&field[i][j]);
}
scanf("%c",&ch);
}
for(i=0;i<N;i++){
for(j=0;j<M;j++){
if(field[i][j]=='W'){
dfs(i,j);
ans++;
}
}
}
printf("%d",ans);
}
核心的dfs程序就是每遇到一个W首先将它变为.然后扩展到周围8个位置坐标检验是否为W 若为W就继续搜索 直至周围都是. 算作一次dfs 最后统计dfs的次数
需要注意的是输入 可以直接输入字符串;或者按照字符输入,但要在每一行末尾接收一个回车
#include <stdio.h>
int N,M;
char field[200][200];
/*void dfs(int x, int y){
field[x][y]='.';
for(int dx=-1;dx<=1;dx++){
for(int dy=-1;dy<=1;dy++){
int nx=x+dx,ny=y+dy;;
if((0<=nx)&&(nx<N)&&(0<=ny)&&(ny<M)&&(field[nx][ny]=='W')){
dfs(nx,ny);
}
}
}
return ;
}
int main()
{
int count=0,i,j;
scanf("%d%d",&N,&M);
for(i=0;i<N;i++)
scanf("%s",field[i]);
for(i=0;i<N;i++){
for(j=0;j<M;j++){
if(field[i][j]=='W'){
dfs(i,j);
count++;
}
}
}
printf("%d\n",count);
return 0;
}*/
void dfs(int x,int y){
int nx,ny,dx,dy;
field[x][y]='.';
for(dx=-1;dx<=1;dx++){
for(dy=-1;dy<=1;dy++){
nx=x+dx;
ny=y+dy;
if(0 <= nx && nx <
N && 0 <= ny && ny <
M && field[nx][ny] ==
'W'){
dfs(nx,ny);
}
}
}
}
int main(){
char ch;
int i,j,ans =
0;
scanf("%d%d",&N,&M);
for(i=0;i<N;i++){
for(j=0;j<M;j++){
scanf("%c",&field[i][j]);
}
scanf("%c",&ch);
}
for(i=0;i<N;i++){
for(j=0;j<M;j++){
if(field[i][j]=='W'){
dfs(i,j);
ans++;
}
}
}
printf("%d",ans);
}
相关文章推荐
- DFS(POJ2386)精简版
- poj2386 Lake Counting(简单DFS)
- POJ2386 Lake Counting (dfs)
- poj2386(dfs)
- poj2386 Lake Counting【DFS】
- bfs和dfs:poj2386和leetcode130
- POJ2386-简单BFS/DFS
- POJ2386 Lake Counting(dfs)
- POJ2386 Lake Counting(DFS,八连通块)
- poj2386 dfs
- POJ2386:Lake Counting(DFS)
- poj2386 (DFS)
- POJ2386 Lake Counting【DFS】
- POJ2386 Lake Counting简单dfs
- poj2386----简单dfs,a一送一
- UVA 572&& PoJ2386 两道DFS入门最经典的题目
- poj2386 Lake Counting DFS
- HDU1241&POJ2386 dfs简单题
- POJ2386 Lake Counting 【DFS】
- poj2386 Lake Counting dfs入门 TWT Tokyo Olympic 2combo-2