方格填数

如下的10个格子
   +--+--+--+
   |  |  |  |
+--+--+--+--+
|  |  |  |  |
+--+--+--+--+
|  |  |  |
+--+--+--+

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

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

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

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

代码以及注释如下:

public class fourteen {

	static int count = 0;
public static void main(String[] args) {
int a[] = new int[12];
boolean visit[] = new boolean[10];//因为只用到了a[1]-a[10];
fourteen t=new fourteen();
t.dfs(a,visit,1);
System.out.println(count);
} void dfs(int[] a, boolean[] visit, int num) {
// TODO Auto-generated method stub
if (num==11) { //这里是求种类数,只要满足 num=11即可
if (judge(a)) { //judge即是判断八个方向是否非法
count++;
}
return;
}
for (a[num] = 0; a[num] < 10; a[num]++) {
if (visit[a[num]]==false) { //boolean类型数组初始化值均为 false
visit[a[num]]=true; //立出访问标志
num = num + 1;
dfs(a, visit, num); //递归运行判断是否邻近允许
num = num - 1; //回溯算法之精髓,如果碰壁就倒退执行
visit[a[num]]=false;
}
}
} public boolean judge(int[] a) {
if ((a[1]==a[2]+1||a[1]==a[2]-1)||
(a[1]==a[6]+1||a[1]==a[6]-1)||
(a[1]==a[5]+1||a[1]==a[5]-1)||
(a[1]==a[4]+1||a[1]==a[4]-1)) {
return false;
}else if ((a[2]==a[5]+1||a[2]==a[5]-1)||
(a[2]==a[3]+1||a[2]==a[3]-1)||
(a[2]==a[7]+1||a[2]==a[7]-1)||
(a[2]==a[6]+1||a[2]==a[6]-1)) {
return false;
}else if ((a[3]==a[6]+1||a[3]==a[6]-1)||
(a[3]==a[7]+1||a[3]==a[7]-1)) {
return false;
}else if ((a[4]==a[5]+1||a[4]==a[5]-1)||
(a[4]==a[8]+1||a[4]==a[8]-1)||
(a[4]==a[9]+1||a[4]==a[9]-1)) {
return false;
}else if ((a[6]==a[7]+1||a[6]==a[7]-1)||
(a[6]==a[10]+1||a[6]==a[10]-1)||
(a[6]==a[9]+1||a[6]==a[9]-1)) {
return false;
}else if (a[7]==a[10]+1||a[7]==a[10]-1) {
return false;
}else if (a[8]==a[9]+1||a[8]==a[9]-1) {
return false;
}else if (a[9]==a[10]+1||a[9]==a[10]-1) {
return false;
}else if ((a[5]==a[6]+1||a[5]==a[6]-1)||
(a[5]==a[10]+1||a[5]==a[10]-1)||
(a[5]==a[9]+1||a[5]==a[9]-1)||
(a[5]==a[8]+1||a[5]==a[8]-1)) {
return false;
}
return true;
} }

  

运行结果如下:

1580

蓝桥杯比赛javaB组练习《方格填数》的更多相关文章

  1. 蓝桥杯比赛javaB组练习《四平方和》

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

  2. 蓝桥杯比赛javaB组练习《牌型种数》

    牌型种数 小明被劫持到X赌城,被迫与其他3人玩牌.一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张.这时,小明脑子里突然冒出一个问题:如果不考虑花色,只考虑点数,也不考虑自己得到的牌 ...

  3. 蓝桥杯比赛javaB组练习《生日蜡烛》

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

  4. 蓝桥杯比赛javaB组练习《饮料换购》

    题目如下: 饮料换购 乐羊羊饮料厂正在举办一次促销优惠活动.乐羊羊C型饮料,凭3个瓶盖可以再换一瓶C型饮料,并且可以一直循环下去,但不允许赊账. 请你计算一下,如果小明不浪费瓶盖,尽量地参加活动,那么 ...

  5. 第六届蓝桥杯java b组第四题

    第四题 两个整数做除法,有时会产生循环小数,其循环部分称为:循环节. 比如,11/13=6=>0.846153846153….. 其循环节为[846153] 共有6位. 下面的方法,可以求出循环 ...

  6. 2018年蓝桥杯java b组第四题

    标题:测试次数 x星球的居民脾气不太好,但好在他们生气的时候唯一的异常举动是:摔手机.各大厂商也就纷纷推出各种耐摔型手机.x星球的质监局规定了手机必须经过耐摔测试,并且评定出一个耐摔指数来,之后才允许 ...

  7. (acwing蓝桥杯c++AB组)1.1 递归

    (acwing蓝桥杯c++AB组)1.课程介绍+递归 文章目录 (acwing蓝桥杯c++AB组)1.课程介绍+递归 课程介绍 第一讲 递归与递推 递归 引入 递归的底层调用顺序 例题与练习 课程介绍 ...

  8. 2019第十届蓝桥杯C++B组题解(赛后重写的,不确保答案正确性,仅供参考)

    先说一下这次的感受吧,我们考场比较乱,开始比赛了,还有的电脑有故障,(向这些人发出同情),第一次认真参加比赛,真正比赛的时候感觉没有那么正式,很乱,各种小问题,(例如博主就没找到题目在哪里,找到后又不 ...

  9. 46-2016 蓝桥杯 java B 组

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

随机推荐

  1. MongoDB--初始

    指定启动目录,以服务形式启动 Mongod --dbpath=XXXXXX --logpath=XXXXXXXX --logappend --serviceName "XXXXX" ...

  2. CoolBlog开发笔记第2课:搭建开发环境

    教程目录 1.1 CoolBlog开发笔记第1课:项目分析 前言 今天是CoolBlog开发笔记的第2课,我们将要讲解的是开发环境的搭建.俗话说"工欲善其事必先利其器",Djang ...

  3. Latex: 插入数学公式

    write equations align equations to left To only align one equation, you can \begin{flalign} &\te ...

  4. Android 串口设置校验位、速率、停止位等参数

    Android 串口通讯设置校验位.速率.停止位等参数 最近业余时间有个android项目需要和硬件进行通信,通讯方式都是通过串口,android串口通讯google有个开源的demo 和很多人一样我 ...

  5. Python爬虫从入门到放弃(十)之 关于深度优先和广度优先

    网站的树结构 深度优先算法和实现 广度优先算法和实现 网站的树结构 通过伯乐在线网站为例子: 并且我们通过访问伯乐在线也是可以发现,我们从任何一个子页面其实都是可以返回到首页,所以当我们爬取页面的数据 ...

  6. LODOP之票据连续套打笔记<一>

    之前项目中需要使用套打,费了半天劲,最后找到LODOP,整体感觉还是不错,简单,满足大多数web套打 这是我项目中需要打印的票据 该票据每张做多显示6条数据,数据超过6条的时候需要进行分页打印,当时做 ...

  7. 【Android Developers Training】 26. 在SQL数据库中保存数据

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...

  8. easyui(一) 初始easyui

    中午贪睡,睡到3点多,爬起来赶紧学习,学习是我快乐(自我催眠).哈哈~ --WH 一.什么是easyui? 学习一个东西,最重要的是知道它的定位(是干嘛的,基本的用法是什么,快速入门),其实easyu ...

  9. 使用Homebrew安装MySQL

    安装命令: brew install mysql 安装完成之后,启动mysql: mysql.server start 发现无此命令: command not found 首先,检查是否是安装了.重新 ...

  10. scrollMenu,一款可滚动的菜单插件 兼容pc和移动端

    这个菜单 有两种样式  , 也可以通过animate.css加不同的动画效果!滚动的方式也有两种   一种为通用的overflow,另外一种是better-scroll的滚动效果 在线链接地址  ht ...