36pts 深搜 求助
  • 板块P1331 海战
  • 楼主HYLD_WYB
  • 当前回复5
  • 已保存回复5
  • 发布时间2023/8/23 16:08
  • 上次更新2023/11/3 01:44:26
查看原帖
36pts 深搜 求助
756339
HYLD_WYB楼主2023/8/23 16:08
#include<bits/stdc++.h>
using namespace std;
char a[1005][1005];
int n,m,ans;
bool vis[1005][1005];
int tx[4]={-1,1,0,0};
int ty[4]={0,0,-1,1};
void dfs(int x,int y){
	vis[x][y]=1;
	for(int i=0;i<4;i++){
		int nx=x+tx[i];
		int ny=y+ty[i];
		if(a[nx][ny]=='.'||vis[nx][ny]==1){
			continue;
		}
		dfs(nx,ny);
	}
}
int main(){
	memset(a,'.',sizeof(a));
	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(vis[i][j]==0&&a[i][j]!='.'){
				dfs(i,j);
				ans++;
			}
		}
	}
	if(ans>1){
		cout<<"There are "<<ans<<" ships.";
	}
	else if(ans==0){
		cout<<"Bad placement.";
	}
	else{
		cout<<"There are "<<ans<<" ship.";
	}
	return 0;
}
2023/8/23 16:08
加载中...