首先我们来看几道java A组的题目,都是同一年的哦!!!

搭积木

小明最近喜欢搭数字积木,
一共有10块积木,每个积木上有一个数字,0~9。

搭积木规则:
每个积木放到其它两个积木的上面,并且一定比下面的两个积木数字小。
最后搭成4层的金字塔形,必须用完所有的积木。

下面是两种合格的搭法:

0
  1 2
 3 4 5
6 7 8 9

0
  3 1
 7 5 2
9 8 6 4

请你计算这样的搭法一共有多少种?

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

先帖代码:

public class test4 {
int a[]=new int[20]; //java 数组初始化值为0
int visit[]=new int[20]; //判断是否使用过
static int count1=0;
public void dfs1(int x){
if(x==10){
if(a[0]<a[1]&&a[0]<a[2] //这里没有进行剪枝操作,因为不方便
&&a[1]<a[3]&&a[1]<a[4]&&a[2]<a[4]&&a[2]<a[5]
&&a[3]<a[6]&&a[3]<a[7]&&a[4]<a[7]&&a[4]<a[8]&&a[5]<a[8]&&a[5]<a[9]){
count1++;
return;
}
} for(int i=0;i<10;i++){
if(visit[i]==0){ //深度搜索套路代码,只可意会
a[x]=i;
visit[i]=1;
dfs1(x+1);
visit[i]=0;
}
}
return; //这个return是当前面的所有的都不成立时回溯(return)到最初调用for循环内的dfs处
} public static void main(String[] args){
new test4().dfs1(0);
System.out.println(count1);
}
}

  结果:768

题目二:

寒假作业

现在小学的数学题目也不是那么好玩的。
看看这个寒假作业:

□ + □ = □
   □ - □ = □
   □ × □ = □
   □ ÷ □ = □
  
   (如果显示不出来,可以参见【图1.jpg】)
  
每个方块代表1~13中的某一个数字,但不能重复。
比如:
 6  + 7 = 13
 9  - 8 = 1
 3  * 4 = 12
 10 / 2 = 5

以及:
 7  + 6 = 13
 9  - 8 = 1
 3  * 4 = 12
 10 / 2 = 5

就算两种解法。(加法,乘法交换律后算不同的方案)
 
你一共找到了多少种方案?

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

代码:

public class test3 {
int a[]=new int[20]; //java 数组初始化值为0
int visit[]=new int[20];
static int count=0;
public void dfs(int x){ //相当于剪枝操作
/*if(x>3&&a[1]+a[2]!=a[3]) //如果前三个数已经被取出来但不符合题设条件,则返回重找
return;
if(x>6&&a[4]-a[5]!=a[6]) //若前三个数满足第一条,看4-6个数是否满足第二个条件
return;
if(x>9&&a[7]*a[8]!=a[9]) //同上
return;
if(x>12&&a[12]*a[11]==a[10]) //如果所有条件均满足,则让count++
{
count++;
return;
}*/
if(x>12){
if((a[1]+a[2]==a[3])&&(a[4]-a[5]==a[6])&&(a[7]*a[8]==a[9])&&(a[12]*a[11]==a[10])){
count++;
return;
}
}
for(int i=1;i<14;i++){
if(visit[i]==0){ //深度搜索套路代码
a[x]=i;
visit[i]=1;
dfs(x+1);
visit[i]=0;
}
}
return; //这个return是当前面的所有的都不成立时回溯(return)到最初调用for循环内的dfs处
} public static void main(String[] args){
new test3().dfs(1);
System.out.println(count);
}
}

  结果: 64

第三题:

方格填数

如下的10个格子
   +--+--+--+
   |0 | 1| 2|
+--+--+--+--+
| 3| 4| 5| 6|
+--+--+--+--+
| 7| 8| 9|
+--+--+--+

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

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

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

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

代码:

public class test5 {

	int a[]=new int[20];   //java 数组初始化值为0
int visit[]=new int[20]; //判断是否使用过
static int count1=0;
public void dfs1(int x){
if(x==10){
if(
(Math.abs(a[0]-a[1])!=1)&&
(Math.abs(a[0]-a[3])!=1)&&
(Math.abs(a[0]-a[4])!=1)&&
(Math.abs(a[0]-a[5])!=1)&&
(Math.abs(a[1]-a[2])!=1)&&
(Math.abs(a[1]-a[4])!=1)&&
(Math.abs(a[1]-a[5])!=1)&&
(Math.abs(a[1]-a[6])!=1)&&
(Math.abs(a[2]-a[5])!=1)&&
(Math.abs(a[2]-a[6])!=1)&&
(Math.abs(a[3]-a[0])!=1)&&
(Math.abs(a[3]-a[4])!=1)&&
(Math.abs(a[3]-a[7])!=1)&&
(Math.abs(a[3]-a[8])!=1)&&
(Math.abs(a[4]-a[5])!=1)&&
(Math.abs(a[4]-a[7])!=1)&&
(Math.abs(a[4]-a[8])!=1)&&
(Math.abs(a[4]-a[9])!=1)&&
(Math.abs(a[5]-a[6])!=1)&&
(Math.abs(a[5]-a[8])!=1)&&
(Math.abs(a[5]-a[9])!=1)&&
(Math.abs(a[6]-a[9])!=1)&&
(Math.abs(a[7]-a[8])!=1)&&
(Math.abs(a[8]-a[9])!=1)
){
count1++;
return;
}
/* if(a[0]!=a[1]&&a[0]!=a[3]&&a[0]!=a[4]&&a[0]!=a[5]
&&a[1]!=a[0]&&a[1]!=a[2]&&a[1]!=a[4]&&a[1]!=a[5]&&a[1]!=a[6]
&&a[2]!=a[1]&&a[2]!=a[5]&&a[2]!=a[6]
&&a[3]!=a[0]&&a[3]!=a[0]&&a[3]!=a[7]
&&a[4]!=a[0]&&a[4]!=a[1]&&a[4]!=a[3]&&a[4]!=a[5]&&a[4]!=a[7]&&a[4]!=a[8]&&a[4]!=a[9]
&&a[5]!=a[0]&&a[5]!=a[1]&&a[5]!=a[2]&&a[5]!=a[4]&&a[5]!=a[6]&&a[5]!=a[8]&&a[5]!=a[9]
&&a[6]!=a[1]&&a[6]!=a[2]&&a[6]!=a[5]&&a[6]!=a[9]
&&a[7]!=a[3]&&a[7]!=a[4]&&a[7]!=a[8]
&&a[8]!=a[3]&&a[8]!=a[4]&&a[8]!=a[5]&&a[8]!=a[7]&&a[8]!=a[9]
&&a[9]!=a[4]&&a[9]!=a[5]&&a[9]!=a[6]&&a[9]!=a[8]){
count1++;
return;
}*/
} for(int i=0;i<10;i++){
if(visit[i]==0){ //深度搜索套路代码,只可意会
a[x]=i;
visit[i]=1;
dfs1(x+1);
visit[i]=0;
}
}
return; //这个return是当前面的所有的都不成立时回溯(return)到最初调用for循环内的dfs处
} public static void main(String[] args){
new test5().dfs1(0);
System.out.println(count1);
} }

  

执行结果:  1580

蓝桥杯比赛关于 BFS 算法总结方法以及套路分析的更多相关文章

  1. C语言蓝桥杯比赛原题和解析

    蓝桥杯:在计算机编程领域,是具有一定含金量的竞赛,用于选拔信息技术人才. 一般分为多个领域,其中包含了C/C#/C++/Java/Python等编程语言的测试题,多为算法的设计题. 下面,在搜题过程中 ...

  2. 蓝桥杯比赛java 练习《立方变自身》

    立方变自身 观察下面的现象,某个数字的立方,按位累加仍然等于自身.1^3 = 1 8^3  = 512    5+1+2=817^3 = 4913   4+9+1+3=17... 请你计算包括1,8, ...

  3. 蓝桥杯比赛javaB组练习《方格填数》

    方格填数 如下的10个格子   +--+--+--+   |  |  |  |+--+--+--+--+|  |  |  |  |+--+--+--+--+|  |  |  |+--+--+--+ ( ...

  4. 蓝桥杯 穿越雷区(bfs)

    题目描述 X星的坦克战车很奇怪,它必须交替地穿越正能量辐射区和负能量辐射区才能保持正常运转,否则将报废.某坦克需要从A区到B区去(A,B区本身是安全区,没有正能量或负能量特征),怎样走才能路径最短? ...

  5. 蓝桥杯 卡片换位(bfs)

    卡片换位 你玩过华容道的游戏吗?这是个类似的,但更简单的游戏.看下面 3 x 2 的格子 在其中放5张牌,其中A代表关羽,B代表张飞,* 代表士兵.还有一个格子是空着的. 你可以把一张牌移动到相邻的空 ...

  6. 蓝桥杯 调手表(bfs解法)

    小明买了块高端大气上档次的电子手表,他正准备调时间呢. 在 M78 星云,时间的计量单位和地球上不同,M78 星云的一个小时有 n 分钟. 大家都知道,手表只有一个按钮可以把当前的数加一.在调分钟的时 ...

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

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

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

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

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

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

随机推荐

  1. Laravel踩坑笔记——illuminate/html被抛弃

    起因 在使用如下代码的时候发生报错 {!! Form::open() !!} 错误信息 [Symfony\Component\Debug\Exception\FatalErrorException] ...

  2. php后台拼接输出table表格

    <?php header("Content-type:text/html;charset=utf-8"); $str=''; $str.='<table border= ...

  3. 进程cookie与硬盘cookie

    内存cookie,是指没有设在cookie的Expires(过期时间)的属性硬盘cookie,是指在你设置了cookie的Expires(过期时间)属性 关于session的几点理解与测试 同一个浏览 ...

  4. oracle11g的内存分配不当,导致的错误ORA-01034,ORA-00838,ORA-27101

    由于开发需要,oracle11g被应用于虚拟机,所以系统资源显得弥足珍贵,百度了一下就有答案. 用dba身份进入Oracle,笔者在plsql中对数据库进行管理: show parameter sga ...

  5. JQuery事件机制笔记

    一.事件绑定及移除 1.bind() bind()为每个匹配的元素绑定一个或多个事件处理函数: 语法:bind(event,fn)//不能给未来元素添加事件: bind(event,fn); bind ...

  6. video+ audio

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  7. PILLOW图片中加入中文 曲线救国Opencv

    索引 简述 准备 示例 效果图 结语 简述 我在使用opencv2或3的时候想要在图片上添加中文文字,需要去下载Freetype库,编译好链接到opencv库中才能中文的输出.网上大部分在图片中插入中 ...

  8. Failed to sync Gradle project 'XX'错误解决

    错误代码 Failed to sync Gradle project 'WeChat' Error:Failed to find target with hash string 'android-24 ...

  9. Teacher implements java.io.Serializable

    package JBJADV003; public class Teacher implements java.io.Serializable{ private String name; privat ...

  10. JavaWeb 后端 <九> 之 JDBC加强

    一.大结果集的分页(重点,难点) 1.分批次查询:分页 2.基于数据库的分页:依赖的是数据库的分页语句(不同数据库是不同的) MySQL:每页显示10条. select * from XXX limi ...