发现百度不到题解,所以参考了官网的题解和程序。总算敲出来了。…………
众所周知,作为一个技术很好的农场主,FJ正在测试他新研发的无人奶牛定位摄像机。这是一台能够拍下田野的照片并且自动地计算出奶牛位置的高端摄像机。不幸的是,摄像机并没有一个很好的运算规则来寻找奶牛,所以FJ需要你的帮助来创造一个更好的版本。
照相机拍下的农场俯视图由一个N*N的矩阵(区别于下文的矩形)描述,矩阵中的任意一个字符都为大写字母,表示26种颜色。FJ定义一个奶牛可能所在地(下称PCL:potential cow location)为:一个PCL是一个矩形(可能是整个矩阵),矩形各边平行于矩阵,且PCL内不包含其他PCL。另外,一个PCL必须满足以下条件:在矩形内有且只有只有两种颜色,且一种颜色只形成一个连续区域,另一种形成两个及以上的连续区域。比如说,如下一个矩形:
AAAAA
ABABA
AAABB
它是一个PCL,因为A形成了一个单独的连续区域,B形成了两个及以上的连续区域。它代表着一头A色底纹带着B色斑点的奶牛。根据FJ的摄像机提供的图像,请你返回PCL个数。
输入格式:
第一行包含一个整数N,表示矩阵的长宽。(1≤N≤20)输出格式:
输出一个数字,表示PCL个数。
因为数据非常小,可以毫无顾忌地枚举矩形的四点边界。此处需要O(n^4)。(没关系,我们还有O(n^4)可以挥霍)接下来判断每个矩形是否满足PCL的两个条件——此处仅判断那两个条件。最后再判断包含问题。
(PCL的定义坑了自己很久,根据我贫瘠的语文能力,翻译很容易产生歧义,还是看题面样例吧。)
显而易见,PCL的定义应该是,这个矩形满足题中两个基本条件,而且没有再被其他满足这两个条件的矩形包含。
代码风格很丑。
#include<bits/stdc++.h>
using namespace std;
int a[25][25]={};//存图。
int