来自P1331的疑惑:
#include<bits/stdc++.h>
using namespace std;
char a[1010][1010];
bool f[1010][1010];
int dl[1000010][5];
int main()
{
int n,m,ans=0;
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]=='#')+(a[i][j+1]=='#')+(a[i+1][j]=='#')+(a[i+1][j+1]=='#')==3)
{
cout<<"Bad placement.";
return 0;
}
if (a[i][j]=='#'&&f[i][j]==0)
{
++ans;
int head=1,tail=1;
dl[head][1]=i;
dl[head][2]=j;
while (head<=tail)
{
f[dl[head][1]][dl[head][2]]=1;
if (f[dl[head][1]-1][dl[head][2]]==0&&a[dl[head][1]-1][dl[head][2]]=='#')
{
tail++;
dl[tail][1]=dl[head][1]-1;
dl[tail][2]=dl[head][2];
}
if (f[dl[head][1]+1][dl[head][2]]==0&&a[dl[head][1]+1][dl[head][2]]=='#')
{
tail++;
dl[tail][1]=dl[head][1]+1;
dl[tail][2]=dl[head][2];
}
if (f[dl[head][1]][dl[head][2]-1]==0&&a[dl[head][1]][dl[head][2]-1]=='#')
{
tail++;
dl[tail][1]=dl[head][1];
dl[tail][2]=dl[head][2]-1;
}
if (f[dl[head][1]][dl[head][2]+1]==0&&a[dl[head][1]][dl[head][2]+1]=='#')
{
tail++;
dl[tail][1]=dl[head][1];
dl[tail][2]=dl[head][2]+1;
}
++head;
}
}
}
}
cout<<"There are "<<ans<<" ships.";
return 0;
}
73 pts3RE调了一晚很崩溃TWT 有答必关,大佬们发发慈悲吧!!!