import java.util.HashMap;/**
小明家的一面装饰墙原来是 3*10 的小方格。
现在手头有一批刚好能盖住2个小方格的长方形瓷砖。
瓷砖只有两种颜色:黄色和橙色。小明想知道,对于这么简陋的原料,可以贴出多少种不同的花样来。
小明有个小小的强迫症:忍受不了任何2*2的小格子是同一种颜色。
(瓷砖不能切割,不能重叠,也不能只铺一部分。另外,只考虑组合图案,请忽略瓷砖的拼缝)
显然,对于 2*3 个小格子来说,口算都可以知道:一共10种贴法,如【p1.png所示】但对于 3*10 的格子呢?肯定是个不小的数目,请你利用计算机的威力算出该数字。注意:你需要提交的是一个整数,不要填写任何多余的内容(比如:说明性文字)* */
public class T2_磁砖样式 {static int[][] array = new int[3][10];static int sum = 0;static HashMap<String, Integer> map = new HashMap<>();static boolean check() {for (int i = 0; i < array.length-1; i++) {for (int j = 0; j < array[0].length-1; j++) {int a = array[i][j];int b = array[i+1][j];int c = array[i][j+1];int d = array[i+1][j+1];if(a==b&&c==d&&a==c) {return false;}}}String result = "";for (int i = 0; i < array.length; i++) {for (int j = 0; j < array[0].length; j++) {result += array[i][j];}}// 以下判断有没有该序列之前有没有出现过if(map.get(result)!=null) {for (int i = 0; i < array.length; i++) {for (int j = 0; j < array[0].length; j++) {System.out.print(array[i][j]+",");}System.out.println();}System.out.println("*******************************");}map.put(result, 1);return true;}static void f(int num,int y,int x) {// 已经被填满if(num == (array.length*array[0].length)/2) {if(check()) {sum++;}return;}// 遍历一行结束判断if(x == array[0].length) {y = y+1;x = 0; }// 判断是否越界if(y == array.length) {return;}// 已经被填充过if(array[y][x] != 0) {f(num,y,x+1);return;}// 1 为黄色,2为橙色for (int k = 1; k <= 2; k++) {// 横向// 判断x是否出界// 判断x的下一个是否出界if(x <= array[0].length -2) {// 判断下一格是否被染色if(array[y][x+1] == 0) {array[y][x] = k;array[y][x+1] = k;f(num+1,y,x+2);array[y][x] = 0;array[y][x+1] = 0;}}// 纵向if(y <= array.length -2) {// 判断竖直方向上下一格是否被染色if(array[y+1][x] == 0) {array[y][x] = k;array[y+1][x] = k;f(num+1,y,x+1);array[y][x] = 0;array[y+1][x] = 0;}}}}public static void main(String[] args) {f(0,0,0);System.out.println(sum); // 错误答案,没有去重System.out.println(map.size());   // 正确答案}
}
// 101466
/** 思路:dfs+去重* 从第一个开始深度优先搜索遍历每一个坐标* 1. 如果被填充跳过* 2. 没被填充考虑两种情况,横向填充,纵向填充,* 3. 临界条件:当跳出数组范围,或填充满的时候结束进行判断是否有2*2是同一种颜色* 问题:去重
2,2,2,2,2,2,2,2,2,2,
2,1,1,2,1,1,2,1,1,2,
2,2,2,2,2,2,2,2,2,2,
例如上矩阵有 两种不同的瓷砖摆放方法* */

蓝桥杯国赛8-JavaA-2-瓷砖样式相关推荐

  1. 2020/第十一届蓝桥杯国赛/Java-A

    试题A:和数个数 boolean isPrime(int n) {for (int i = 2; i <= Math.sqrt(n); i++) {if (n % i == 0) {return ...

  2. 蓝桥杯国赛 C/C++ ABC组题解(第四届 ~ 第十二届)

    2020年第十一届蓝桥杯国赛 题号 类型 C++ A组 C++ B组 C++ C组 试题A 结果填空 合数个数 美丽的 2 美丽的 2 试题B 结果填空 含 2 天数 (日期处理) 扩散 (BFS) ...

  3. 蓝桥杯国赛知识点汇总

    蓝桥杯国赛备赛总结知识点,以老师给的为原型,添加自己理解,供大家参考,后期不定时更新. 基础 1.熟练掌握API1.8常用方法 2.大数(高精度)加减乘除 3.并查集 模板: public class ...

  4. 2020年第十一届蓝桥杯 - 国赛 - Python大学组 - H.答疑

    题目链接 Ideas 2020年第十一届蓝桥杯 - 国赛 - Python大学组 - H.答疑 Code Python if __name__ == '__main__':n = int(input( ...

  5. 2020年第十一届蓝桥杯 - 国赛 - Java研究生组 - F.循环小数

    2020年第十一届蓝桥杯 - 国赛 - Java研究生组 - F.循环小数 在线评测 Ideas 对于一个纯循环小数,假设循环节为l,则小数为0.llll-,转换为分数就是 l / (10 ** n ...

  6. 蓝桥杯评分标准_新闻 | 人工智能学院创新创业实践中心开展蓝桥杯国赛经验分享会...

    为让各位蓝桥杯国赛选手以饱满精力迎接接下来的比赛,天津科技大学人工智能学院创新创业实践中心邀请到计算机科学与技术专业教研室主任吴江红老师为各位蓝桥杯国赛选手分享经验,提高选手们的应试应赛能力. 吴江红 ...

  7. 第十一届蓝桥杯国赛题目

    以下是第十一届蓝桥杯国赛题目,供大家学习参考(提取码失效可以评论我) 百度云: 链接: https://pan.baidu.com/s/1g1o-px-RUVoXLLhRDS8cXQ 提取码: fgf ...

  8. 2022年十三届蓝桥杯国赛(C/C++大学B组)个人题解

    2022年十三届蓝桥杯国赛(C/C++大学B组)个人题解 更新:成绩出来了,估分50分左右,最后拿了个国二,还差点到国一,有点出乎意料,挺满意了挺满意了. 去年国赛基本都是暴力,最后国三都没拿到(我是 ...

  9. 第十二届蓝桥杯国赛真题+题解 Python

    文章目录 写在前面 试题A:带宽 试题 B: 纯质数 试题C: 完全日期 试题D: 最小权值 试题 E: 大写 试题 F: 123 试题 G: 冰山 试题 H: 和与乘积 试题 I: 二进制问题 试题 ...

  10. 蓝桥杯国赛C++A组B组题解整理(第八、七、六、五、四届)

    [写在前面的话19.04.04] 今年省赛的结果出的意外得快,有很多小伙伴来和我分享他们进了省一的喜悦,并问我啥时候更新国赛题解,emmm--不是我不想更新,实在是抽不出时间,有缘再更--虽然不更新题 ...

最新文章

  1. 下一个十年,AI将在这10大领域颠覆世界!
  2. 360安全浏览器兼容模式怎么设置_360浏览器极速模式怎么设置
  3. Tesseract-OCR 字符识别-样书训练
  4. 【LeetCode】0830.较大分组的位置
  5. c语言位操作大小写转换,C语言实现大小写转换的三种方法
  6. materialize_使用Materialize快速介绍材料设计
  7. OpenGL:配置glad
  8. php 正则替换url参数,JavaScript正则获取地址栏中参数的方法分享
  9. 从旧版升级到MySql4.1上的中文乱码问题解决方案
  10. Android P版本怎么简单的验证HIDL的Demo例程
  11. java图书推荐系统源代码_基于Web图书推荐系统设计
  12. 华为NP课程笔记16-MPLS(上)
  13. 4个终于被破译的世界级密码
  14. linux 下ssd训练自己的数据
  15. 视频目标检测paper带读(一)《Flow-Guided Feature Aggregation for Video Object Detection》
  16. 语音信号处理--基音检测实验
  17. 下C语言做的五子棋,20年没输过
  18. 使用代码给ACCESS窗体中32个文本框赋不同值的实例
  19. C语言stdlid是什么函数,为什么Curry的std lib中的非确定性选择函数没有直接定义,而是使用辅助2参数函数?...
  20. 商城项目01 _电商系统基本模式、分布式基础概念、微服务架构图、微服务划分图

热门文章

  1. 可以升级鸿蒙吗,魅族上船,鸿蒙有戏?
  2. 华为禁用android键盘,怎么禁用输入法-教你如何关闭华为/荣耀手机的安全键盘
  3. 数据治理系列文章:(7)数据安全
  4. modis遥感影像数据批量下载(不限制网速的办法)
  5. Palindrome Numer
  6. 我又来分享来了,发现一个好的ide,免费的国产的,优秀的,自带md阅读器.那就是uni-app
  7. AjaxPro.2.dll基本使用
  8. 盘点2017全球最优秀的6款免费远程桌面软件
  9. 万豪国际集团在华运营酒店超过400家
  10. 数字化转型,有你有我