P1331 Help!
  • 板块P1331 海战
  • 楼主YXD123456789
  • 当前回复0
  • 已保存回复0
  • 发布时间2021/10/20 18:16
  • 上次更新2023/11/4 03:09:26
查看原帖
P1331 Help!
545310
YXD123456789楼主2021/10/20 18:16

求大佬帮忙改正

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N=1e4+1;
bool st[N][N];
ll f[N][N];
ll cnt;
int ans=0;
ll n,m;
bool flag=true;
char a;
int dx[]={-1,0,1,0};
int dy[]={0,-1,0,1};
inline void check(int x,int y)
{
	if(f[x][y]==1)ans++;
	if(f[x+1][y]==1)ans++;
	if(f[x][y+1]==1)ans++;
	if(f[x+1][y+1]==1)ans++;
	if(ans-3==0)
	{
		flag=false;
	}
	return ;
}
void dfs(int x,int y)
{
	for(int i=0;i<4;i++)
	{
		int ex=x+dx[i];
		int ey=y+dy[i];
		if(!st[ex][ey]&&f[ex][ey]==1)
		{
			st[ex][ey]=1;
			f[ex][ey]=0;
			dfs(ex,ey);
		}
	}
}
int main()
{
	cin>>n>>m;
	for(ll i=1;i<=n;i++)
	{
		for(ll j=1;j<=m;j++)
		{
			cin>>a;
			if(a=='#')
			{
				f[i][j]=1;
			}
		}
	}
	for(ll i=1;i<=n;i++)
	{
		for(ll j=1;j<=m;j++)
		{
			check(i,j);
			if(f[i][j]==1)
			{
				dfs(i,j);
				cnt++;
			}
		}
	}
	if(flag)
		printf("There are %d ships.",cnt);
	else
		cout<<"Bad placement.";
	return 0;
}
2021/10/20 18:16
加载中...