方格填数

如下的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. AngularJS高级程序设计读书笔记 -- 过滤器篇

    一. 过滤器基础 过滤器用于在视图中格式化展现给用户的数据. 一旦定义过滤器之后, 就可在整个模块中全面应用, 也就意味着可以用来保证跨多个控制器和视图之间的数据展示的一致性. 过滤器将数据在被指令处 ...

  2. 利用Jsoup包爬取网站内容

    一 Jsoup包 下载链接:http://download.csdn.net/detail/u014000832/7994245 二 爬取搜狐新闻网站标题等内容 package com.test1; ...

  3. arcgis api for js入门开发系列十叠加SHP图层

    上一篇实现了demo的热力图,本篇新增叠加SHP图层,截图如下: 叠加SHP图层效果实现的思路如下:利用封装的js文件,直接读取shp图层,然后转换geojson,最后通过arcgis api来解析转 ...

  4. js中的事件,内置对象,正则表达式

    [JS中的事件分类] 1.鼠标事件: click/dbclick/mouseover/mouseout/mousemove/mousedown/mouseup 2.键盘事件: keydown: 键盘按 ...

  5. PostgreSQL数据库web维护客户端工具软件

    TreeSoft数据库管理系统使用JAVA开发,采用稳定通用的springMVC +JDBC架构,实现基于WEB方式对 MySQL,Oracle,PostgreSQL 等数据库进行维护管理操作. 功能 ...

  6. php通过cURL下载网络上面的一个HTTPS的资源

    <?php /** * php通过cURL下载网络上面的一个HTTPS的资源 * 案例:从google的CDN上下载jquery- v1.7.1 */ $curlobj = curl_init( ...

  7. javascript封装的函数

    /*获取一个指定长度随机数*/ csdn.random = function (len) { if (!len) len = 5; var r = Math.random().toString(); ...

  8. openssl ca(签署和自建CA)

    用于签署证书请求.生成吊销列表CRL以及维护已颁发证书列表和这些证书状态的数据库.因为一般人无需管理crl,所以本文只介绍openssl ca关于证书管理方面的功能. 证书请求文件使用CA的私钥签署之 ...

  9. 在ASP.NET CORE 2.0使用SignalR技术

    一.前言 上次讲SignalR还是在<在ASP.NET Core下使用SignalR技术>文章中提到,ASP.NET Core 1.x.x 版本发布中并没有包含SignalR技术和开发计划 ...

  10. Linux 压缩 与解压命令

    tar命令 解包:tar zxvf FileName.tar 打包:tar czvf FileName.tar DirName gz命令 解压1:gunzip FileName.gz 解压2:gzip ...