6.方格填数  (结果填空)

如下的10个格子

(如果显示有问题,也可以参看【图1.jpg】)

填入0~9的数字。要求:连续的两个数字不能相邻。
(左右、上下、对角都算相邻)

一共有多少种可能的填数方案?

请填写表示方案数目的整数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。

提示:和前面第4题分小组,都是用的全排列的思想,只是这个附加了条件,在递归出口时多加一下题目里的附加条件

思路:将表格从上到下从左到右从0开始编号 ,判断每种相邻的方案是否为连续数字,不是则+1

  1. public class _6方格填数 {
  2. public static void main(String[] args) {
  3. // char[] str={'0','1','2','3','4','5','6','7','8','9'};
  4. char[] str="0123456789".toCharArray();
  5. paixu(str, 0, str.length-1);
  6. System.out.println(count);
  7. }
  8. public static int count=0;
  9. //交换位置
  10. public static void swap(char[] c,int i,int j){
  11. char temp = c[i];
  12. c[i] = c[j];
  13. c[j] = temp;
  14. }
  15. //排序
  16. public static void paixu(char[] c,int from,int to){
  17. if (to<=1) {
  18. return;
  19. }if (from == to) {
  20. if (check(c)) {
  21. count++;
  22. }
  23. }else{
  24. for (int i = from; i <= to; i++) {
  25. swap(c, i, from);
  26. paixu(c, from+1, to);
  27. swap(c, from, i);
  28. }
  29. }
  30. }
  31. // 检查左右,上下,对角不是相邻的数字
  32. public static boolean check(char[] c) {
  33. if (check2(c[0], c[1]) && check2(c[0], c[3]) && check2(c[0], c[4])&& check2(c[0], c[5])
  34. && check2(c[1], c[2])&& check2(c[1], c[4])&& check2(c[1], c[5])&& check2(c[1], c[6])
  35. && check2(c[2], c[5])&& check2(c[2], c[6])
  36. && check2(c[3], c[4])&& check2(c[3], c[7])&& check2(c[3], c[8])
  37. && check2(c[4], c[5])&& check2(c[4], c[7])&& check2(c[4], c[8])&& check2(c[4], c[9])
  38. && check2(c[5], c[6])&& check2(c[5], c[8])&& check2(c[5], c[9])
  39. && check2(c[6], c[9])
  40. && check2(c[7], c[8])
  41. && check2(c[8], c[9])) {
  42. return true;
  43. }
  44. return false;
  45. }
  46. // 检查相邻的数字
  47. public static boolean check2(char a,char b){
  48. if (a == (b+1)||a==(b-1)) {
  49. return false;
  50. }
  51. return true;
  52. }
  53. }

运行结果:1580

java算法 蓝桥杯(题+答案) 方格填数的更多相关文章

  1. 第七届蓝桥杯javaB组真题解析-方格填数(第六题)

    题目 /* 方格填数 如下的10个格子 +--+--+--+ | | | | +--+--+--+--+ | | | | | +--+--+--+--+ | | | | +--+--+--+ (如果显 ...

  2. java算法 蓝桥杯 扶老奶奶街

    一共有5个红领巾,编号分别为A.B.C.D.E,老奶奶被他们其中一个扶过了马路. 五个红领巾各自说话: A :我和E都没有扶老奶奶 B :老奶奶是被C和E其中一个扶过大街的 C :老奶奶是被我和D其中 ...

  3. java算法 蓝桥杯 乘法运算

    问题描述 编制一个乘法运算的程序. 从键盘读入2个100以内的正整数,进行乘法运算并以竖式输出. 输入格式 输入只有一行,是两个用空格隔开的数字,均在1~99之间(含1和99). 输出格式 输出为4行 ...

  4. java算法 蓝桥杯 高精度加法

    问题描述 在C/C++语言中,整型所能表示的范围一般为-231到231(大约21亿),即使long long型,一般也只能表示到-263到263.要想计算更加规模的数,就要用软件来扩展了,比如用数组或 ...

  5. java算法 蓝桥杯 格子位置

    问题描述 输入三个自然数N,i,j (1<=i<=N,1<=j<=N),输出在一个N*N格的棋盘中,与格子(i,j)同行.同列.同一对角线的所有格子的位置. 输入格式 输入共三 ...

  6. java算法 蓝桥杯 文化之旅

    问题描述 有一位使者要游历各国,他每到一个国家,都能学到一种文化,但他不愿意学习任何一种文化超过一次(即如果他学习了某种文化,则他就不能到达其他有这种文化的国家).不同的国家可能有相同的文化.不同文化 ...

  7. java算法 蓝桥杯 摆花

    问题描述 小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共m盆.通过调查顾客的喜好,小明列出了顾客最喜欢的n种花,从1到n标号.为了在门口展出更多种花,规定第i种花不能超过ai盆,摆花时 ...

  8. java算法 蓝桥杯 洗牌

    问题描述 小弱T在闲暇的时候会和室友打扑克,输的人就要负责洗牌.虽然小弱T不怎么会洗牌,但是他却总是输. 渐渐地小弱T发现了一个规律:只要自己洗牌,自己就一定会输.所以小弱T认为自己洗牌不够均匀,就独 ...

  9. java算法 蓝桥杯(题+答案) 压缩变换

    10.压缩变换  (程序设计) 小明最近在研究压缩算法.他知道,压缩的时候如果能够使得数值很小,就能通过熵编码得到较高的压缩比.然而,要使数值很小是一个挑战. 最近,小明需要压缩一些正整数的序列,这些 ...

随机推荐

  1. zoom:1-hasLayout

    在现代浏览器,如果子元素float,则父元素不会自动被撑开 #nofloatbox { border: 1px solid #FF0000; background: #CCC; width:200px ...

  2. linux开机自启动服务优化设置命令

    1.设置成英文字符,避免出现乱码[root@xuegod62 ~]# LANG=en2.两种配置linux开机自启动服务命令:1)[root@xuegod62 ~]# ntsysv2)[root@xu ...

  3. Codeforces Round #392 (Div. 2)-758D. Ability To Convert(贪心,细节题)

    D. Ability To Convert time limit per test 1 second Cmemory limit per test 256 megabytes input standa ...

  4. C++的输入和输出

    C++是一种常用的编程语言.一个完整的程序至少要有一个输出,而我们也经常需要在程序内进行大量输入和输出.所以今天,我和大家谈一谈输入和输出. 1.cin和cout.可以连续输入,使用流(>> ...

  5. OVS vxlan 底层结构分析 - 每天5分钟玩转 OpenStack(148)

    上一节创建了 vxlan100_net 并部署 instance,今天我们来分析底层网络结构. 控制节点 执行 ovs-vsctl show: br-int br-int 连接了如下 port: ta ...

  6. C++ cout 输出小数点后指定位数

    在C中我们可以使用 printf("%.2lf",a);但在C++中是没有格式操作符的,该如何操作: C++使用setprecision()函数,同时必须包含头文件iomanip, ...

  7. block之---内存管理

    首先简单说下MRC和ARC MRC: 手动管理内存,需要自己去释放内存, 如果对象的引用计数器为0时对象就会被释放. 属性修饰策略:assign, retain, copy ARC: ARC是编译器特 ...

  8. Spark RDD编程核心

    一句话说,在Spark中对数据的操作其实就是对RDD的操作,而对RDD的操作不外乎创建.转换.调用求值. 什么是RDD RDD(Resilient Distributed Dataset),弹性分布式 ...

  9. 跟着内核学框架-从misc子系统到3+2+1设备识别驱动框架

    misc子系统在Linux中是一个非常简单的子系统,但是其清晰的框架结构非常适合用来研究设备识别模型.本文从misc子系统的使用出发,通过了解其机制来总结一套的设备识别的驱动框架,即使用使用同一个驱动 ...

  10. HR从业者的下一个十年该怎么做?

    众所周知,目前我们所处的以互联网为代表的新经济时代,有两个重要的特征一是客户价值至上,二是人力资本主权.围绕这两个基本特征,我们需要重新架构我们的商业模式和创新人力资源管理思维.模式.工具和方法. 人 ...