蓝桥杯比赛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层,共有多少个煤 ...
随机推荐
- Web设计思想——渐进增强
最近在拜读一本Web体验相关的书<渐进增强--跨平台用户体验设计 >,阅读后做些总结,消化一下书中的精髓. 在阅读本文前,可以先思考下面几个问题. 1. 浏览网页的目的是什么? 2. 浏览 ...
- Java IO学习笔记总结
Java IO学习笔记总结 前言 前面的八篇文章详细的讲述了Java IO的操作方法,文章列表如下 基本的文件操作 字符流和字节流的操作 InputStreamReader和OutputStreamW ...
- 用JS来实现于截取中英文混合字符串方法(转载)
网站制作过程中,提示层文字超出,需要JS做字符串截取,但是呢,我们常常会烦恼文字中英文混合如何判断,因为我们知道在JS中 string.length这个值是不考虑中英文的,但是计算机对中英文的识别是 ...
- Pycharm创建的virtualenv环境缺失pip.exe的问题(Windows系统)
Windows环境: 1. Python安装在d:\Python\Python35下, Python新版本安装时默认会勾选pip功能 2. PyCharm的Settings中Create Virtua ...
- [leetcode-500-Keyboard Row]
Given a List of words, return the words that can be typed using letters of alphabet on only one row' ...
- Chapter 6. H.264/MPEG4 Part10
本章节主要介绍有关H.264的内容 H.264有三种profile,分别是: Baseline Profile Main Profile Extended Profile 三者之间的关系和主要内容可以 ...
- JDBC数据库增、删、改、查方法实现类
package daoMYSQL;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedSt ...
- VS2015 +Qt5 串口工具
简单的小工具是VS2015 + Qt5.6.1实现的,界面部分是Qt实现,串口是封装的WinAPI,把串口收发模块封装成了个Serialport.dll 供Qt界面调用. 由于VS2015需要CRT运 ...
- JS之正则表达式
一.正则表达的目标: 1.使用表单事件和脚本函数实现表单验证 2.使用String对象和文本框控件常用属性和方法实现客户端验证 二.什么需要表单验证: 1.表单元素是否为空 2.用户名和密码 3.E- ...
- SpringJdbc持久层封装,Spring jdbcTemplate封装,springJdbc泛型Dao,Spring baseDao封装
SpringJdbc持久层封装,Spring jdbcTemplate封装,springJdbc泛型Dao,Spring baseDao封装 >>>>>>>& ...