46分求助
  • 板块P1331 海战
  • 楼主Tom2025
  • 当前回复5
  • 已保存回复5
  • 发布时间2025/7/23 13:35
  • 上次更新2025/7/23 16:53:29
查看原帖
46分求助
1796963
Tom2025楼主2025/7/23 13:35
#include<bits/stdc++.h>
using namespace std;
int n, m;
char g[101][101];
int visited[101][101] = {0};
int sum = 0;
int x[4] = {-1, 0, 1, 0}, y[4] = {0, 1, 0, -1};
void dfs(int x0, int y0, int count){
	count ++;
	if(g[x0][y0] == '#' && visited[x0][y0] == 0){
		visited[x0][y0] = 1; 
		if(count == 1) {
			sum ++;
		}
	} 
	for(int i = 0;i < 4;i ++){
		int x1 = x0 + x[i];
		int y1 = y0 + y[i];
		if(x1 >= 0 && x1 < n && y1 >= 0 && y1 < m && visited[x1][y1] == 0 && g[x1][y1] != '.'){
			dfs(x1, y1, count + 1);
		}
	}
}
int main(){
	cin >> n >> m;
	for(int i = 0;i < n;i ++){
		for(int j = 0;j < m;j ++){
			cin >> g[i][j];
		}
	}
	for(int i = 0;i < n;i ++){
		for(int j = 0;j < m;j ++){
			dfs(i, j, 0);
		}
	}
    if(sum==0){
    	cout<<"Bad placement.";
    }else{
    	cout<<"There are "<<sum<<" ships.";
    }
	return 0;
}
2025/7/23 13:35
加载中...