【2016江苏省小学生夏令营选拔】小 X 学游泳

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

题目描述

小 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.
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值