题目描述

随着海上运输石油泄漏的问题,一个新的有利可图的行业正在诞生,那就是采油行业。如今,在墨西哥湾漂浮的大量石油,吸引了许多商人的目光。

这些商人们有一种特殊的飞机,可以一瓢略过整个海面20米乘10米这么大的长方形。(上下相邻或者左右相邻的格子,不能斜着来)当然,这要求一瓢撇过去的全部是油,如果一瓢里面有油有水的话,那就毫无意义了,资源完全无法利用。

现在,商人想要知道,在这片区域中,他可以最多得到多少瓢油。

*地图是一个N×N的网络,每个格子表示10m×10m的正方形区域,每个区域都被标示上了是油还是水

Solution

看起来非常朴素草率的dfs爆搜就能解决问题,寄啦!

如何判断海上相连的一片石油能舀出多少瓢可以使用的油呢(要求相邻的两格都是油,不能有水)

一个非常具有人类智慧的想法是,对于每一个坐标 (x,y) ,与其相邻的四个点坐标分别是 (x+1,y),(x-1,y),(x,y+1),(x,y-1)。 可以发现,横纵坐标的和存在规律,(x+y) 与 (x+y+1),(x+y-1) 间一定存在一奇一偶。

因此我们可以认为,相邻的两个格子的坐标和一定是以一奇一偶的形式成对出现的,我们只需要统计连通的一片油中奇数和偶数的坐标数量,取最小值即可。

代码