大佬救我,五个测试点WA了,用的深搜
#include<bits/stdc++.h>
using namespace std;
int m,n,c;
char a[1000][1000];
int sum[5]= {0,0,1,0,-1};
int som[5]= {0,1,0,-1,0};
void fun(int x,int y) {
a[x][y]='.';
int s1,s2;
for(int i=1;i<=4;i++) {
s1=x+sum[i];
s2=y+som[i];
if(a[s1][s2]=='#'&&s1>=0&&s1<=n&&s2>=0&&s1<=m){
fun(s1,s2);
}
}
}
int main() {
cin>>n>>m;
for(int i=1; i<=n; i++) {
for(int j=1; j<=m; j++) {
cin>>a[i][j];
}
}
for(int i=1; i<=n; i++) {
for(int j=1; j<=m; j++) {
if(a[i][j]=='#'){
c++;
fun(i,j);
}
}
}
if(c!=0){
cout<<"There are "<<c<<" ships.";
}
else{
cout<<"Bad placement.";
}
return 0;
}