dalao求调!
  • 板块P1331 海战
  • 楼主Cypher_404
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/7/16 11:44
  • 上次更新2024/7/16 13:44:15
查看原帖
dalao求调!
1039274
Cypher_404楼主2024/7/16 11:44
#include<bits/stdc++.h>
using namespace std;
int n,m,ans;
int a[1200][1200];
int dx[4]={0,0,1,-1};
int dy[4]={1,-1,0,0}; 
struct sc
{
	int x,y;
};
void bfs(int x,int y)
{
	queue<sc>que;
	que.push({x,y});
	while(!que.empty())
	{
		int x=que.front().x;
		int y=que.front().y;
		que.pop();
		if(x<=0||y<=0||x>n||y>m)
		{
			continue;
		}
		if(a[x][y]==0)
		{
			continue;
		}
		a[x][y]=0;
		for(int i=0;i<4;i++)
		{
			que.push({dx[i]+x,dy[i]+y});
		}
	}
}
int main()
{
	char c;
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			c=getchar();
			while(c!='.'&&c!='#')
			{
				c=getchar();
			}
			a[i][j]=(c=='#'?1:0);
		}
	}
//	return 0;
	for(int i=1;i<n;i++)
	{
		for(int j=1;j<m;j++)
		{
			if(a[i][j]==0)
			{
				continue;
			}
			int num=0;
			for(int k=0;k<=3;k++)
			{
				int nx=i+dx[k];
				int ny=j+dy[k];
//				if(nx<=0||ny<=0)
//				{
//					continue;
//				}
				if(a[nx][ny]==1)
				{
					num++;
				}
			}
			if(num==3)
			{
				printf("Bad placement.");
				return 0;
			}
		}
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			if(a[i][j]!=0)
			{
				bfs(i,j);
				ans++;
			}
		}
	}
	printf("There are %d ships.",ans);
	return 0;
}

提交记录

2024/7/16 11:44
加载中...