1 条题解
-
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
信息
- ID
- 5522
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者