标题:磁砖样式

小明家的一面装饰墙原来是 3*10 的小方格。
现在手头有一批刚好能盖住2个小方格的长方形瓷砖。
瓷砖只有两种颜色:黄色和橙色。
小明想知道,对于这么简陋的原料,可以贴出多少种不同的花样来。
小明有个小小的强迫症:忍受不了任何2*2的小格子是同一种颜色。
(瓷砖不能切割,不能重叠,也不能只铺一部分。另外,只考虑组合图案,请忽略瓷砖的拼缝)
显然,对于 2*3 个小格子来说,口算都可以知道:一共10种贴法,如【p1.png所示】
但对于 3*10 的格子呢?肯定是个不小的数目,请你利用计算机的威力算出该数字。

注意:你需要提交的是一个整数,不要填写任何多余的内容(比如:说明性文字)

思路:dfs搜索,最后利用HashSet判重。

import java.util.HashSet;
import java.util.Set;public class 瓷砖样式 {/*** @param args*/
//  static int sum=0;static int dir[][]={{-1,0},{0,1},{1,0},{0,-1}};static Set<String> set=new HashSet<String>();public static void main(String[] args) {int x[][]=new int[3][10];for (int i = 0; i < x.length; i++) {for (int j = 0; j < x[0].length; j++) {x[i][j]=-1;}}dfs(x,0,0);System.out.println(set.size());}private static void dfs(int[][] x, int h, int l) {if(h>=x.length){if(check(x)){
//              sum++;String s="";for (int i = 0; i < x.length; i++) {for (int j = 0; j < x[0].length; j++) {s+=x[i][j]+"";}}set.add(s);return;}else {return;}}else{if(x[h][l]==-1) {//该点没有访问过for (int i = 0; i <= 1; i++) {x[h][l]=i;//填数   0或1//四个方向,分别试探填数for (int k = 0; k < 4; k++) {int x1=h+dir[k][0];int y1=l+dir[k][1];if(x1<0 || x1>=x.length || y1<0 || y1>=x[0].length){continue;}else if(x[x1][y1]!=-1){continue;}else {x[x1][y1]=i;//这里向下递归应该用(h,l)而不是(x1,y1),卡了bug。。。dfs(x,h+(l+1)/x[0].length,(l+1)%x[0].length);x[x1][y1]=-1;}}x[h][l]=-1;}}else {//访问过并且已经填了数dfs(x,h+(l+1)/x[0].length,(l+1)%x[0].length);}}
}private static boolean check(int[][] x) {for (int i = 1; i < x[0].length-1; i++) {if(judge(x,i)){return false;}}return true;}//检验是否出现小正方形的情况private static boolean judge(int[][] x, int j) {int t=x[1][j];if(x[1][j-1]==t&&x[0][j]==t&&x[0][j-1]==t){return true;}else if (x[1][j-1]==t&&x[2][j]==t&&x[2][j-1]==t) {return true;}else if (x[1][j+1]==t&&x[0][j]==t&&x[0][j+1]==t) {return true;}else if (x[1][j+1]==t&&x[2][j]==t&&x[2][j+1]==t) {return true;}return false;}}

蓝桥杯——瓷砖样式(第八届决赛)相关推荐

  1. 【蓝桥杯单片机组第八届决赛】— 第一部分客观试题

    第一部分客观试题 第1题:  第2题:  第3题:  第4题:  第5题: 第6题:

  2. 2015年 第06届 蓝桥杯 Java B组 决赛真题详解及小结

    蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...

  3. [蓝桥杯][2017年第八届真题]包子凑数(解题报告)

    问题 1886: [蓝桥杯][2017年第八届真题]包子凑数 时间限制: 1Sec 内存限制: 128MB 提交: 406 解决: 118 题目描述 小明几乎每天早晨都会在一家包子铺吃早餐.他发现这家 ...

  4. 蓝桥杯第六届决赛真题大全解(java版本)

    文章推荐 精选java等全套学习资源 精选java电子图书资源 精选大数据学习资源 java项目练习精选 >蓝桥杯第六届决赛第一题[(详情(分机号))](http://blog.csdn.net ...

  5. 蓝桥杯第七届决赛真题大全题解(java版本)

    文章推荐 精选java等全套学习资源 精选java电子图书资源 精选大数据学习资源 java项目练习精选 >蓝桥杯第七届决赛第一题[(详情(愤怒小鸟))](http://blog.csdn.ne ...

  6. 2016年 第07届 蓝桥杯 Java B组 决赛真题详解及小结

    蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...

  7. 2017年 第08届 蓝桥杯 Java B组 决赛真题详解及小结

    ​​​​​蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 ...

  8. 2018年 第09届 蓝桥杯 Java B组 决赛真题详解及小结

    蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...

  9. 2019年 第10届 蓝桥杯 Java B组 决赛真题详解及小结

    蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...

最新文章

  1. 多兼容的JS获取鼠标坐标
  2. nginx fastcgi python_Nginx + webpy 和FastCGI搭建webpy环境
  3. NOIP2003普及组第1题 乒乓球(Table.cpp)-- python3实现
  4. java 多个timer_java – Timer正在创建多个计时器实例
  5. java随机生成字母用三元运算符,【代码笔记】Java常识性基础补充(一)——赋值运算符、逻辑运算符、三元运算符、Scanner类、键盘输入、Random类、随机数...
  6. Docker系列(九)Docker的远程访问
  7. ios UISearchController
  8. 【王道考研】计算机网络知识点
  9. 下行文格式图片_下行文标准模版[2]
  10. 实木地板被机器人弄成坑_“实木地板”真的好?这些不搞明白,小心被商家坑了...
  11. 30岁开始学编程晚吗?
  12. Matlab突然打不开,运行后一闪就消失了,任务管理器也没有的解决办法
  13. JDBC Driver介绍
  14. ios android 跨平台工具,15个很优秀的跨平台的移动开发工具
  15. numpy相关介绍和基本操作
  16. SQL Server查询排序 升序 降序
  17. mes系统和plc通讯案例_MES系统与PLC数据集成主要方式
  18. Android 仿美拍,秒拍 ,视频封面选择.有图有真相.
  19. CSS中的长度单位和HTML5中多媒体标签的使用
  20. linux电脑关机命令是什么问题,linux下正常关机之命令详解 -电脑资料

热门文章

  1. python magic number_编程中的「魔数」(magic number)是什么意思?平时我们能接触到哪些魔数?...
  2. 网速卡慢延迟大怎么解决?
  3. 贵有恒,何必三更眠五更起;最无益,莫过一日暴十日寒。
  4. 沃兹结束苹果生涯 | 历史上的今天
  5. 我爱天文 - 月亮从哪边升出来?
  6. 网易互娱游戏研发岗准备
  7. 把SD卡制作为启动卡的操作步骤
  8. 高质增长,全年盈利!2022年京东业绩报告来了!
  9. 互联网专业委员会 (Internet 缩写 CCF TCI)
  10. 深度学习中数据的拆分打乱