72分求助。

P1331 海战

代码给你 ```cpp #include<bits/stdc++.h> using namespace std; char s[1005][1005]; bool vis[1005][1005]; int n,m; int dx[4] = {1,-1,0,0}; int dy[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 + dx[i],ny = y+ dy[i]; if(nx < 1||nx > n||ny < 1||ny > m) continue; if(vis[nx][ny] == 0&&s[nx][ny] == '#') dfs(nx,ny); } return; } int check(int i, int j){ int cnt = 0; if(s[i][j] == '#') cnt++; if(s[i+1][j] == '#') cnt++; if(s[i][j+1] == '#') cnt++; if(s[i+1][j+1] == '#') cnt++; return cnt; } int main(){ cin>>n>>m; for(int i = 1;i <= n;i++) for(int j = 1;j <= m;j++) cin>>s[i][j]; bool flag = false; for(int i = 1;i <= n - 1;i++) for(int j = 1;j <= m - 1;j++) if(check(i,j) == 3) flag = true; if(flag==true){ cout<<"Bad placement."<<endl; return 0; } int ans = 0; for(int i = 1;i <= n;i++) for(int j = 1;j <= m;j++) if(s[i][j] == '#'&&vis[i][j] == 0){ ans++;dfs(i,j); } cout<<"There are "<<ans<<" ships."<<endl; return 0; ```
by cjy2011 @ 2024-04-06 11:46:08


|