Content

有一个 \(n\times m\) 的拼图,摆上了几块俄罗斯方块图形。已知这些图形可能包含以下这五种(可以旋转),求出下列类型的俄罗斯方块图形数量。

数据范围:\(1\leqslant n,m\leqslant 10\)。

Solution

像我这样菜的人,这种题目只有一种方法:暴力判断

各位玩过俄罗斯方块的都知道,上面 \(5\) 种图形中,第一种图形无论怎么旋转都是一样的,第二、三、四种都可以通过旋转得到两种不同的图形,第五种可以通过旋转得到 \(4\) 种不同的图形。具体是什么样的想必各位都能够想象得出来。

于是,我们只需要对这总共 \(1+2\times 3+4=11\) 种情况进行暴力判断就好了。抓住这些图形的特征,并转化成代码语言就能够迎刃而解。

然而最烦人的就是打代码的过程……

Code

仅搬出判断五种不同类型的图形的函数 \(\texttt{judge1}\sim\texttt{judge5}\),毕竟这才是整个代码的精髓,也是我打得最要命的地方……

inline bool judge1(int i, int j) {return a[i][j] != '.' && (a[i][j] == a[i + 1][j] && a[i][j] == a[i + 1][j + 1] && a[i][j] == a[i][j + 1]);}
inline bool judge2(int i, int j) {return a[i][j] != '.' && ((a[i][j] == a[i][j + 1] && a[i][j] == a[i][j + 2] && a[i][j] == a[i][j + 3]) || (a[i][j] == a[i + 1][j] && a[i][j] == a[i + 2][j] && a[i][j] == a[i + 3][j]));}
inline bool judge3(int i, int j) {return a[i][j] != '.' && ((a[i][j] == a[i][j - 1] && a[i][j] == a[i + 1][j - 1] && a[i][j] == a[i + 1][j - 2]) || (a[i][j] == a[i + 1][j] && a[i][j] == a[i + 1][j + 1] && a[i][j] == a[i + 2][j + 1]));}
inline bool judge4(int i, int j) {return a[i][j] != '.' && ((a[i][j] == a[i][j + 1] && a[i][j] == a[i + 1][j + 1] && a[i][j] == a[i + 1][j + 2]) || (a[i][j] == a[i + 1][j] && a[i][j] == a[i + 1][j - 1] && a[i][j] == a[i + 2][j - 1]));}
inline bool judge5(int i, int j) {return a[i][j] != '.' && ((a[i][j] == a[i + 1][j - 1] && a[i][j] == a[i + 1][j] && a[i][j] == a[i + 1][j + 1]) || (a[i][j] == a[i - 1][j - 1] && a[i][j] == a[i][j - 1] && a[i][j] == a[i + 1][j - 1]) || (a[i][j] == a[i - 1][j - 1] && a[i][j] == a[i - 1][j] && a[i][j] == a[i - 1][j + 1]) || (a[i][j] == a[i - 1][j + 1] && a[i][j] == a[i][j + 1] && a[i][j] == a[i + 1][j + 1]));}

最新文章

  1. Oracle PLSQL
  2. 墙国内新建Rails应用的要点(windows 7环境, Rails 4.2.0)
  3. Java性能优化权威指南-读书笔记(一)-操作系统性能监控工具
  4. Entityframework更新数据和插入数据
  5. DESCryptoServiceProvider加密、解密
  6. Xilinx 网站资源导
  7. POJ 2263 Heavy Cargo(Floyd + map)
  8. CRM实施失败?请注意这6大问题及对策!
  9. Linux调整日期时间
  10. C#基于wpf编写的串口调试助手
  11. 遍历List过程中同时修改
  12. [Linux] [JNI]
  13. zeromq学习记录(一)最初的简单示例使用ZMQ_REQ ZMQ_REP
  14. json转对象-对象转json
  15. [Java] 用 Comparator 实现排序
  16. DAO层,Service层,Controller层、View层
  17. Donald Ervin Knuth:最年轻的图灵奖高德纳
  18. CCF201412-1 门禁系统
  19. 如何实现iframe页面与父级页面js交互
  20. Javascript的对象分类

热门文章

  1. 构建“元宇宙”,有哪些3D建模方式?
  2. 部署vue项目到Linux服务器
  3. Linux查看进程
  4. WC 2007 剪刀石头布
  5. R数据科学-2
  6. 【机器学习与R语言】5-规则学习算法
  7. go搭建beego框架 go安装bee报错 github.com/derekparker/delve@v1.4.0: parsing go.mod:
  8. mysql—将字符型数字转成数值型数字
  9. 【Go语言学习笔记】包
  10. C++ 害死人不偿命的(3n+1)猜想