解决方案:利用全排列和递归

使用Java中的集合API:HashMap ArrayList

  1. package com.lzp.lanqiaoseven.p6;
  2. import java.util.*;
  3. /**
  4. * @Author LZP
  5. * @Date 2021/2/26 14:38
  6. * @Version 1.0
  7. *
  8. *
  9. 方格填数
  10. 如下的10个格子
  11. +--+--+--+
  12. | | | |
  13. +--+--+--+--+
  14. | | | | |
  15. +--+--+--+--+
  16. | | | |
  17. +--+--+--+
  18. (如果显示有问题,也可以参看本篇博文开头)
  19. 填入0~9的数字。要求:连续的两个数字不能相邻。
  20. (左右、上下、对角都算相邻)
  21. 一共有多少种可能的填数方案?
  22. 请填写表示方案数目的整数。
  23. 注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
  24. 全排列
  25. */
  26. public class Main {
  27. private static int[] arr = new int[11];
  28. /**
  29. * 辅助数组
  30. */
  31. private static int[] dp = new int[10];
  32. private static int count;
  33. private static Map<Integer, List<Integer>> map = null;
  34. private static List<Integer> list= null;
  35. public static void main(String[] args) {
  36. map = new HashMap<>();
  37. list= new ArrayList<>();
  38. list.add(2);
  39. list.add(4);
  40. list.add(5);
  41. list.add(6);
  42. map.put(1, list);
  43. list= new ArrayList<>();
  44. list.add(1);
  45. list.add(3);
  46. list.add(5);
  47. list.add(6);
  48. list.add(7);
  49. map.put(2, list);
  50. list= new ArrayList<>();
  51. list.add(2);
  52. list.add(6);
  53. list.add(7);
  54. map.put(3, list);
  55. list= new ArrayList<>();
  56. list.add(1);
  57. list.add(5);
  58. list.add(8);
  59. list.add(9);
  60. map.put(4, list);
  61. list= new ArrayList<>();
  62. list.add(1);
  63. list.add(2);
  64. list.add(4);
  65. list.add(6);
  66. list.add(8);
  67. list.add(9);
  68. list.add(10);
  69. map.put(5, list);
  70. list= new ArrayList<>();
  71. list.add(1);
  72. list.add(2);
  73. list.add(3);
  74. list.add(5);
  75. list.add(7);
  76. list.add(9);
  77. list.add(10);
  78. map.put(6, list);
  79. list= new ArrayList<>();
  80. list.add(2);
  81. list.add(3);
  82. list.add(6);
  83. list.add(10);
  84. map.put(7, list);
  85. list= new ArrayList<>();
  86. list.add(4);
  87. list.add(5);
  88. list.add(9);
  89. map.put(8, list);
  90. list= new ArrayList<>();
  91. list.add(4);
  92. list.add(5);
  93. list.add(6);
  94. list.add(8);
  95. list.add(10);
  96. map.put(9, list);
  97. list= new ArrayList<>();
  98. list.add(5);
  99. list.add(6);
  100. list.add(7);
  101. list.add(9);
  102. map.put(10, list);
  103. division(1);
  104. System.out.println(count);
  105. }
  106. public static void division(int pos) {
  107. if (pos > 10) {
  108. boolean flag = true;
  109. for (int i = 1; i < arr.length; i++) {
  110. List<Integer> values = map.get(i);
  111. for (int j = 0; j < values.size(); j++) {
  112. int temp = arr[values.get(j)];
  113. if (arr[i] - 1 == temp || arr[i] + 1 == temp) {
  114. // 两数连续
  115. flag = false;
  116. break;
  117. }
  118. }
  119. if (!flag) {
  120. break;
  121. }
  122. }
  123. if (flag) {
  124. count++;
  125. }
  126. return;
  127. }
  128. for (int i = 0; i <= 9; i++) {
  129. if (dp[i] == 0) {
  130. dp[i] = 1;
  131. arr[pos] = i;
  132. division(pos + 1);
  133. dp[i] = 0;
  134. }
  135. }
  136. }
  137. }

运行结果:

感悟:一开始总以为各个方格可以填写重复的数,然后用代码实现的时候发现结果好长时间都没运行出来,这时就反过来思考,这毕竟是一个结果填空题,题目应该不至于那么复杂,然后就再试了一下将0~9这10个数字依次不重复的填入所有方格,也就是每个方格的数都不能相同(即每个数只能用一次),最后程序竟然跑出结果来了。于是就去网上看下网友的答案,发现我俩的答案是一样的,我觉得没那么巧,答案应该是没有错,我还是不放心,就再搜了几篇博客再验证一下。终于功夫不负有心人,都对上了哈哈,到此本篇博客也就结束了,同时也希望看到这篇博客的朋友们能一起学习交流,如有错误,请多指正!!!

第七届蓝桥杯JavaB组——第6题方格填数的更多相关文章

  1. 第七届蓝桥杯JavaB组——第7题剪邮票

    题目: 剪邮票 如[图1.jpg], 有12张连在一起的12生肖的邮票. 现在你要从中剪下5张来,要求必须是连着的. (仅仅连接一个角不算相连) 比如,[图2.jpg],[图3.jpg]中,粉红色所示 ...

  2. 2016年第七届蓝桥杯javaB组 试题 答案 解析

    1.煤球数目 有一堆煤球,堆成三角棱锥形.具体: 第一层放1个, 第二层3个(排列成三角形), 第三层6个(排列成三角形), 第四层10个(排列成三角形), .... 如果一共有100层,共有多少个煤 ...

  3. 第七届蓝桥杯JavaB组省赛真题

    解题代码部分来自网友,如果有不对的地方,欢迎各位大佬评论 题目1.煤球数量 煤球数目 有一堆煤球,堆成三角棱锥形.具体: 第一层放1个, 第二层3个(排列成三角形), 第三层6个(排列成三角形), 第 ...

  4. 第七届蓝桥杯javaB组真题解析-分小组(第四题)

    题目 /* 分小组 9名运动员参加比赛,需要分3组进行预赛. 有哪些分组的方案呢? 我们标记运动员为 A,B,C,... I 下面的程序列出了所有的分组方法. 该程序的正常输出为: ABC DEF G ...

  5. 第七届蓝桥杯javaB组真题解析-凑算式(第三题)

    题目 /* 凑算式 B DEF A + --- + ------- = 10 C GHI (如果显示有问题,可以参见[图1.jpg]) 这个算式中A~I代表1~9的数字,不同的字母代表不同的数字. 比 ...

  6. 第七届蓝桥杯javaB组真题解析-生日蜡烛(第二题)

    题目 /* 生日蜡烛 某君从某年开始每年都举办一次生日party,并且每次都要吹熄与年龄相同根数的蜡烛. 现在算起来,他一共吹熄了236根蜡烛. 请问,他从多少岁开始过生日party的? 请填写他开始 ...

  7. 第七届蓝桥杯javaB组真题解析-煤球数目(第一题)

    题目 /* 煤球数目 有一堆煤球,堆成三角棱锥形.具体: 第一层放1个, 第二层3个(排列成三角形), 第三层6个(排列成三角形), 第四层10个(排列成三角形), .... 如果一共有100层,共有 ...

  8. 第七届蓝桥杯javaB组真题解析-四平方和(第八题)

    题目 /* 四平方和 四平方和定理,又称为拉格朗日定理: 每个正整数都可以表示为至多4个正整数的平方和. 如果把0包括进去,就正好可以表示为4个数的平方和. 比如: 5 = 0^2 + 0^2 + 1 ...

  9. 第七届蓝桥杯javaB组真题解析-剪邮票(第七题)

    题目 /* 剪邮票 如[图1.jpg], 有12张连在一起的12生肖的邮票. 现在你要从中剪下5张来,要求必须是连着的. (仅仅连接一个角不算相连) 比如,[图2.jpg],[图3.jpg]中,粉红色 ...

随机推荐

  1. IDLE怎么修改背景?

    摘要:IDLE默认为白色,可能有的人喜欢其他颜色,那么怎么修改呢? 颜色喜好,因人而异.不想千篇一律使用默认的白色,可以通过以下操作修改IDLE的背景颜色以及其他设置. 打开Python官方自带的ID ...

  2. JVM之堆参数

    1.Java 7和Java 8区别 Java 7堆结构 JDK 1.8之后将最初的永久代取消了,由元空间取代. 在Java8中,永久代已经被移除,被一个称为元空间的区域所取代.元空间的本质和永久代类似 ...

  3. Codeforces Round #692 (Div. 2, based on Technocup 2021 Elimination Round 3) C. Peaceful Rooks (思维,dsu找环)

    题意:一个棋盘上有一些"车",现在要让这些"车"跑到左倾斜的对角线上,每次可以移动一个棋子,但是棋盘的任意时刻都不能出现一个"车"能吃另一个 ...

  4. Codeforces Round #177 (Div. 2) B. Polo the Penguin and Matrix (贪心,数学)

    题意:给你一个\(n\)x\(m\)的矩阵,可以对矩阵的所有元素进行\(\pm d\),问能否使得所有元素相等. 题解:我们可以直接记录一个\(n*m\)的数组存入所有数,所以\((a_1+xd)=( ...

  5. Codeforces Round #498 (Div. 3) D. Two Strings Swaps (思维)

    题意:给你两个长度相同的字符串\(a\)和\(b\),你可以将相同位置上的\(a\)和\(b\)的字符交换,也可以将\(a\)或\(b\)中某个位置和对应的回文位置上的字符交换,这些操作是不统计的,你 ...

  6. [Golang]-3 函数、多返回值、变参、闭包、递归

    // test01 project main.go package main import ( "fmt" ) // 单返回值的函数 func plus(a int, b int) ...

  7. Python_小程序

    一.开发前的准备工作 1.申请AppID:一个账号对应一个小程序,个人/个体只能申请5个小程序 2.下载开发工具 二.小程序的文件结构 三. 1.数据绑定 1.1数据的设置 Page( data:{ ...

  8. kubernetes进阶(五)dashboard--WEB管理

    dashboard是k8s的可视化管理平台,是三种管理k8s集群方法之一 首先下载镜像上传到我们的私有仓库中:hdss7-200 # docker pull k8scn/kubernetes-dash ...

  9. 涂颜色的RPG问题

    长度为n的方格,刷3种颜色的颜料,相邻的方格颜料颜色不能相同,且首尾方格颜色不能相同.每个方格必须涂色.计算一共有多少种涂色方式. 解题思路:(1)f(1)=3,f(2)=6,f(3)=6 (2)如果 ...

  10. 1. mac 手动安装nodejs搭建vue环境

    为什么选择手动安装nodejs呢? 因为使用mac自动安装还要更新homebrew,还要安装xcode tool, 太费劲了,不如手动安装, 卸载起来也方便 再一个, 我是后台开发者, 对前端页面, ...