背景:做题遇到,题目
农夫约翰的农场可以表示成N*M(1≤N≤100≤M≤100)个方格组成的矩形。由于近日的降雨,在约翰农场上的不同地方形成了池塘。每一个方格或者有积水('W')或者没有积水('.')。农夫约翰打算数出他的农场上共形成了多少池塘。一个池塘是一系列相连的有积水的方格,每一个方格周围的八个方格都被认为是与这个方格相连的。现给出约翰农场的图样,要求输出农场上的池塘数。
输入
第1行:由空格隔开的两个整数:N和M
第2..N+1行:每行M个字符代表约翰农场的一排方格的状态。每个字符或者是'W'或者是'.',字符之间没有空格。
输出
输出只有1行,输出约翰农场上的池塘数
代码
#include <bits/stdc++.h>
using namespace std;
int n,m,b[101][101]={},out=0,a[101][101]={};
char linshi;
void lookfor(int numi,int numj){
if(a[numi][numj]==1&&b[numi][numj]==0){
b[numi][numj]=1;
lookfor(numi,numj+1);
lookfor(numi+1,numj);
lookfor(numi+1,numj+1);
}
}
int main(){
cin>>n,m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>linshi;
if(linshi=='W'){
a[i][j]=1;
}
}
}
for(int i=1;i<n;i++){
for(int j=1;j<m;j++){
if(b[i][j]==0){
lookfor(i,j);
out++;
}
}
}
return 0;
}
运行结果:没有办法下文的
之前是直接char二维数组的,后来出现问题变成char转成0 1两种,放到int二维数组里,结果没用
我的思路有问题?
我想要达到的结果
输入
10 12
(字符串,加上我发不出去)
输出
3
谢谢