1 solutions
-
0
#include<bits/stdc++.h> using namespace std; const int N=1010; char a[N][N]; int x[N][N]; int dx[5]={0,0,-1,1,0},dy[5]={-1,1,0,0,0}; int main() { int n,m; cin>>n>>m; for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { cin>>a[i][j]; } } int res=0; for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { int cnt=0; for(int k=0;k<4;k++) { if(a[i+dx[k]][j+dy[k]]=='#') { cnt++; } } if(a[i][j]=='.'&&cnt==0) { res++; } x[i][j]=cnt; } } //cout<<res<<endl; int maxv=0; for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { if(a[i][j]=='.') { continue; } else { int c=0; for(int k=0;k<4;k++) { //判断这个相邻位置是可以被开荒 int xx=i+dx[k],yy=j+dy[k]; if(x[xx][yy]==1&&a[xx][yy]=='.') { c++; } } if(a[i][j]=='#'&&x[i][j]==0) { c++; } maxv=max(maxv,c); } } } cout<<res+maxv; return 0; }
Information
- ID
- 2565
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 5
- Tags
- # Submissions
- 15
- Accepted
- 1
- Uploaded By