怎么判断船的位置放得是否正确啊?
#include<bits/stdc++.h>
using namespace std;
char a[1005][1005];
int f[1005][1005],sum=0;
int dx[]={-1,0,1,0};
int dy[]={0,-1,0,1};
void bfs(int n,int m){
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(a[i][j]=='#'){
queue<pair<int,int>> q;
q.push({i,j});
if(f[i][j]==1){
continue;
}
else{
sum++;
}
while(!q.empty()){
int x=q.front().first;
int y=q.front().second;
f[x][y]=1;
q.pop();
for(int i=0;i<4;i++){
int nx=dx[i]+x;
int ny=dy[i]+y;
if(a[nx][ny]=='#' && f[nx][ny]==0){
f[nx][ny]=1;
q.push({nx,ny});
}
}
}
}
//
}
}
return ;
}
int main(){
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>a[i][j];
}
}
bfs(n,m);
cout<<"There are "<<sum<<" ships.";
/* 测试
cout<<endl;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cout<<f[i][j]<<' ';
}
cout<<endl;
}
*/
return 0;
}