题目大意:给定一个图片,要求你找出上面窗户的种类,每个窗户上都被染上了不同性状的颜色。其中有一些窗户可能会被旋转,旋转之后的窗户和原窗户等效。求有多少种不同的窗户。
思路分析:一开始考虑字符矩阵状态数组,储存一下横行和纵行的计数状态,然后开个 m a p map map映射一下。但是发现这样无法确切的表示状态;然后又考虑哈希,发现不是很好写。于是采用队友的思路:直接将每个窗户旋转四次合成一个字符串,然后对字符串打一个 m a p map map,每次旋转之后判断是否存在先前的状态。不存在就插入一个。最后输出 m a p map map的大小即可。
#include
using namespace std;
const int N = 200;
char mp[N][N];
map mpp;
inline void findwh(int &w, int &h, int r, int c){
bool flag1 = false, flag2 = false;
int lhcx, lhcy, rdcx, rdcy;
for(int i = 1; i r >> c;
for(int i = 1; i mp[i][j];
int w = 1, h = 1; //!w--横向宽度
findwh(h, w, r, c);
if(w == c && h == r) return cout
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?