poj2386.cpp

来源:互联网 发布:51内核单片机 编辑:程序博客网 时间:2024/04/25 09:38
//这道题改了无数遍结果一直输出零,由于题目输入较长,我们可以取一个3乘3测试,技巧啊!!
//这还是一道简单题。略微有坑点。。
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<string>
#include<stdlib.h>

using namespace std;

int N,M;
char filed[102][102];

void dfs(int x,int y)//DFS的精髓
{
filed[x][y]='.';//替换现在位置
for(int dx=-1;dx<=1;dx++){
for(int dy=-1;dy<=1;dy++){

int nx=x+dx;
int ny=y+dy;
if(0 <= nx&& nx <= N && 0 <= ny && ny <= M && filed[nx][ny] == 'W') dfs(nx,ny);
}
}
}

int main()
{
scanf("%d %d",&N,&M);
getchar();
for(int i=0;i<N;i++){
for(int j=0;j<M;j++){
scanf("%c",&filed[i][j]);//我这里的输入形式有问题‘
}
getchar();//加不加都可以,加上总没错吧!!
}
int count=0;
for(int i=0;i<N;i++){
for(int j=0;j<M;j++){
if(filed[i][j]=='W')
{dfs(i,j);
count++;}
}
}
printf("%d/n",count);

return 0;
}
0 0