题目描述
小 X 想要学游泳。
这天,小 X 来到了游泳池,发现游泳池可以用 N 行 M 列的格子来表示,每个格子的面积都是 1,且格子内水深相同。
由于小 X 刚刚入门,他只能在水深相同的地方游泳。为此,他把整个游泳池看成若干片区域,如果两个格子相邻(上下左右四个方向)且水深相同,他就认为它们属于同一片区域。
小 X 想知道最大的一片区域面积是多少,希望你帮帮他。
输入
第一行包含用一个空格隔开的两个整数 N,M。
接下来 N 行,每行包含 M 个 1 到 9 的数字,表示每个格子的水深。
输出
第一行包含一个整数,表示最大的一片区域面积。
样例输入
3 3 124 224 152
样例输出
3
数据范围限制
对于 30%的数据,1≤N,M≤3。
对于 60%的数据,1≤N,M≤10。
对于 100%的数据,1≤N,M≤100。
数据很小,搜索就OK。
//看我写的另一篇最大黑区域,思路是一样的//
//真不是我懒:) ----->别不看思路就copy代码,对你没好处。。。
代码:
#include <bits/stdc++.h>
using namespace std;
int n, m, a[105][105], sum, ans = 0, s;
char ch;
void dfs(int x, int y)
{
sum++;
a[x][y] = -1;
if (a[x + 1][y] == s)
dfs(x + 1, y);
if (a[x - 1][y] == s)
dfs(x - 1, y);
if (a[x][y + 1] == s)
dfs(x, y + 1);
if (a[x][y - 1] == s)
dfs(x, y - 1);
}
main()
{
freopen("swim.

这篇博客介绍了如何解决一个关于寻找最大相同水深区域的问题。小X在学习游泳时,将游泳池划分为多个区域,并通过深度优先搜索算法来确定最大的同水深区域,输出其面积。代码中展示了如何实现这个过程。
最低0.47元/天 解锁文章
3809

被折叠的 条评论
为什么被折叠?



