题目链接:https://vjudge.net/problem/UVALive-7747
题意:给定r*w的图,包含若干窗户,每个窗户由“.”或“+”组成,每个窗户大小相等(矩形非正方形),相邻窗户间有“#”间隔开,大矩形的外围也是一圈“#”,求一共有多少种不同的窗户。若一个窗户经过旋转0 90 180 270或360度能与另一个窗户完全重合,则认为这两个窗户是同一种窗户。
思路:我是直接模拟的,先确定窗户的长宽,然后在大矩形中分离出每个窗户,三个get_window函数将其旋转90 180 270度得到它的三种形态,每种窗户储存在setans中,每个窗户用字符串储存,每次判断该字符串是否在ans中已存在,若该窗户四种形态均不存在,则计数加一,将加入ans中。写的很长,但是很简单明了,缺点也是太长写起来费时间,在场上出的不算太快。
代码如下:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include