最大的蛋糕块
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
这一小明天生日,他的朋友们一起来给小明买一个大的蛋糕过生日。游戏做完后到了切蛋糕的时刻了,朋友们知道小明喜欢吃蛋糕,便让小明自己给自己切一块最大的。小明看朋友们这么热情也就不客气了。
这块蛋糕是由 的网格构成,每个网格上面都放有不同的水果。小明把这些水果分为两类,一类是自己喜欢吃的水果,用'#'
来表示;一类是自己不喜欢吃的水果,用'.'
来表示。
小明对切出的蛋糕有如下要求:
- 切出的蛋糕连成一块(可以不为矩形,但必须在网格上连通)
- 切出的蛋糕只包含自己喜欢吃的水果
请问,小明最大可以吃到多大的蛋糕?
请在合适地方填下代码
#include <cstdio>
#include <iostream>
#include <algorithm>
using namespace std;
int n, m;
bool vis[1005][1005];
string maze[1005];
int ans, cnt;
int dir[4][2] = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}};
bool in(int x, int y) {
return x >= 0 && x < n && y >= 0 && y < m;
}
void dfs(int x, int y) {
cnt++;
vis[x][y] = true;
for (int i = 0; i < 4; i++) {
// 请在这里添加合适的代码
}
}
int main() {
freopen("cake.in", "r", stdin);
freopen("cake.out", "w", stdout);
cin >> n >> m;
for (int i = 0; i < n; i++) {
cin >> maze[i];
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (maze[i][j] == '#' && !vis[i][j]) {
// 请在这里添加合适的代码
dfs(i, j);
// 请在这里添加合适的代码
}
}
}
cout << ans << endl;
return 0;
}
输入格式
第一行输入两个被空格隔开的整数 和 。
然后会有一个 的网格,由'#'
和'.'
组成。
输出格式
输出一个整数,表示小明可以吃到的蛋糕最大是多少(即对应到网格中的格子数)。
输出时每行末尾的多余空格,不影响答案正确性
要求使用「文件输入输出」的方式解题,输入文件为 cake.in
,输出文件为 cake.out
样例输入
5 6
.#....
..#...
..#..#
...##.
.#....
样例输出
2