题解
2025-06-15 10:32:50
发布于:北京
5阅读
0回复
0点赞
#include <bits/stdc++.h>
using namespace std;
int main() {
int n, m;
cin >> n >> m;
char a[1005][1005];
int c[1005][1005] = {0};
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
cin >> a[i][j];
}
}
int dx[4] = {-1, 1, 0, 0};
int dy[4] = {0, 0, -1, 1};
int t = 0;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
if (a[i][j] == '.') {
bool c1 = true;
for (int d = 0; d < 4; d++) {
int ni = i + dx[d];
int nj = j + dy[d];
if ( a[ni][nj] == '#') {
c1 = false;
break;
}
}
if (c1) {
t++;
for (int d = 0; d < 4; d++) {
int ni = i + dx[d];
int nj = j + dy[d];
c[ni][nj]++;
}
c[i][j]++;
}
}
}
}
if (t == 0) {
cout << 0 << endl;
return 0;
}
int max1 = 0;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
if (a[i][j] == '.') {
max1 = max(max1, c[i][j]);
}
}
}
cout << t - max1 << endl;
return 0;
}
全部评论 1
求原来要开多少地,再求放在哪里影响的开垦数量最多,最后相减
昨天 来自 北京
0
有帮助,赞一个