尽管自认为找不到毛病但它死活不肯去推别的点导致样例都不过的屑
#include<bits/stdc++.h>
using namespace std;
char mp[1001][1001];
int r,c,ans;
void fd(int i,int j)
{
mp[i][j]='.';
if(mp[i-1][j]=='#')
fd(i-1,j);
if(mp[i+1][j]=='#')
fd(i-1,j);
if(mp[i][j-1]=='#')
fd(i,j-1);
if(mp[i][j+1]=='#')
fd(i,j+1);
}
int main()
{
cin>>r>>c;
for(int i=1;i<=r;i++)
for(int j=1;j<=c;j++)
cin>>mp[i][j];
for(int i=1;i<=r;i++)
for(int j=1;j<=c;j++)
if(mp[i][j]=='#')
fd(i,j),ans++;
if(ans)
cout<<"There are "<<ans<<" ships.";
else
cout<<"Bad placement.";
}