1 solutions
-
0
C++ :
#include <bits/stdc++.h> using namespace std; const int maxn=1e3+5; int a[maxn][maxn]; int dx[]= {-1,0,1,0}; int dy[]= {0,1,0,-1}; int n,m,ans; bool check(int x, int y) { for(int i=0; i<4; i++) { int tx=x+dx[i],ty=y+dy[i]; if(tx<1 || tx>n || ty<1 || ty>m) continue; if(a[tx][ty]==1) return false; } return true; } int main() { cin>>n>>m; for(int i=1; i<=n; i++) { for(int j=1; j<=m; j++) { char c; cin>>c; if(c=='#') a[i][j]=1; } } for(int i=1; i<=n; i++) { for(int j=1; j<=m; j++) { if(a[i][j]==0 && check(i,j)) ans++; } } int res=0; for(int i=1; i<=n; i++) { for(int j=1; j<=m; j++) { int cnt=0; if(a[i][j]==1) { a[i][j]=0; if(check(i,j)) cnt++; for(int k=0; k<4; k++) { int tx=i+dx[k], ty=j+dy[k]; if(tx<1 || tx>n || ty<1 || ty>m) continue; if(a[tx][ty]==0 && check(tx,ty)) cnt++; } a[i][j]=1; } res=max(res,cnt); } } cout<<ans+res<<endl; return 0; } /* in: 3 5 ..... .#..# ..... out: 11 */
- 1
Information
- ID
- 70
- Time
- 1000ms
- Memory
- 128MiB
- Difficulty
- (None)
- Tags
- # Submissions
- 0
- Accepted
- 0
- Uploaded By