蓝桥杯比赛javaB组练习《方格填数》
方格填数
如下的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组练习《方格填数》的更多相关文章
- 蓝桥杯比赛javaB组练习《四平方和》
四平方和 四平方和定理,又称为拉格朗日定理:每个正整数都可以表示为至多4个正整数的平方和.如果把0包括进去,就正好可以表示为4个数的平方和. 比如:5 = 0^2 + 0^2 + 1^2 + 2^27 ...
- 蓝桥杯比赛javaB组练习《牌型种数》
牌型种数 小明被劫持到X赌城,被迫与其他3人玩牌.一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张.这时,小明脑子里突然冒出一个问题:如果不考虑花色,只考虑点数,也不考虑自己得到的牌 ...
- 蓝桥杯比赛javaB组练习《生日蜡烛》
题目如下: 生日蜡烛 某君从某年开始每年都举办一次生日party,并且每次都要吹熄与年龄相同根数的蜡烛. 现在算起来,他一共吹熄了236根蜡烛. 请问,他从多少岁开始过生日party的? 请填写他开始 ...
- 蓝桥杯比赛javaB组练习《饮料换购》
题目如下: 饮料换购 乐羊羊饮料厂正在举办一次促销优惠活动.乐羊羊C型饮料,凭3个瓶盖可以再换一瓶C型饮料,并且可以一直循环下去,但不允许赊账. 请你计算一下,如果小明不浪费瓶盖,尽量地参加活动,那么 ...
- 第六届蓝桥杯java b组第四题
第四题 两个整数做除法,有时会产生循环小数,其循环部分称为:循环节. 比如,11/13=6=>0.846153846153….. 其循环节为[846153] 共有6位. 下面的方法,可以求出循环 ...
- 2018年蓝桥杯java b组第四题
标题:测试次数 x星球的居民脾气不太好,但好在他们生气的时候唯一的异常举动是:摔手机.各大厂商也就纷纷推出各种耐摔型手机.x星球的质监局规定了手机必须经过耐摔测试,并且评定出一个耐摔指数来,之后才允许 ...
- (acwing蓝桥杯c++AB组)1.1 递归
(acwing蓝桥杯c++AB组)1.课程介绍+递归 文章目录 (acwing蓝桥杯c++AB组)1.课程介绍+递归 课程介绍 第一讲 递归与递推 递归 引入 递归的底层调用顺序 例题与练习 课程介绍 ...
- 2019第十届蓝桥杯C++B组题解(赛后重写的,不确保答案正确性,仅供参考)
先说一下这次的感受吧,我们考场比较乱,开始比赛了,还有的电脑有故障,(向这些人发出同情),第一次认真参加比赛,真正比赛的时候感觉没有那么正式,很乱,各种小问题,(例如博主就没找到题目在哪里,找到后又不 ...
- 46-2016 蓝桥杯 java B 组
1.煤球数目 有一堆煤球,堆成三角棱锥形.具体: 第一层放1个, 第二层3个(排列成三角形), 第三层6个(排列成三角形), 第四层10个(排列成三角形), .... 如果一共有100层,共有多少个煤 ...
随机推荐
- 友盟分享到微信 监听不执行 监听只执行onStart,(onResult,onError,onCancel 不执行)
最近在做一个项目 有一个需求是要分享项目中的一个商品 这对于我来说简直是 so easy (项目是三个人一起写的) 正好看到之前有同事写完了 我就拿过来用吧 一顿复制粘贴 大功告成 这个是监 ...
- 摘抄自知乎的redis相关
1.知乎日报的基础数据和统计信息是用 Redis 存储的,这使得请求的平均响应时间能在 10ms 以下.其他数据仍然需要存放在另外的地方,其实完全用 Redis 也是可行的,主要的考量是内存占用.就使 ...
- PHP中单引号和双引号的区别
双引号里面的字段会经过编译器解释,然后再当作HTML代码输出:单引号里面的不进行解释,直接输出: PHP引号使用原则 1.字符串的值用单引号 2.PHP中尽量用单引号,HTML代码全部用双引号 3.在 ...
- memcache常用命令
一.memcached的基本命令(安装.卸载.启动.配置相关): -p 监听的端口 -l 连接的IP地址, 默认是本机 -d start 启动memcached服务 -d restart 重起m ...
- linux下安装telnet
1:yum install telnet-server 2:编辑设置 /etc/xinetd.d/telnet ,将disable= yes设置成disable= no 3:service xine ...
- RandomAccessFile乱码问题
转自:http://www.cnblogs.com/xudong-bupt/archive/2013/04/20/3028980.html Thanks Java对文件的读.写随机访问,Ran ...
- JS之正则表达式
一.正则表达的目标: 1.使用表单事件和脚本函数实现表单验证 2.使用String对象和文本框控件常用属性和方法实现客户端验证 二.什么需要表单验证: 1.表单元素是否为空 2.用户名和密码 3.E- ...
- 第二章:2.9 总结一下 Django
1. URLconf(URL configuration ) : 这个模块包含URL模式(正则表达式)到视图函数(view.py)的简单映射. 2. python 正则表达式: 解释: 通配符:r : ...
- voa 2015.4.29
Nepal has declared three days of mourning for the victims of Saturday's 7.8 magnitude earthquake tha ...
- Java之分支和循环
Java中的分支语句: if语句: if语句的四种写法: (1) if(表达式_布尔值) { ... } (2) if(表达式_布尔值) { ... } else { ... } (3) if(表达式 ...