第七届蓝桥杯javaB组真题解析-剪邮票(第七题)
题目
/*
剪邮票 如【图1.jpg】, 有12张连在一起的12生肖的邮票。
现在你要从中剪下5张来,要求必须是连着的。
(仅仅连接一个角不算相连)
比如,【图2.jpg】,【图3.jpg】中,粉红色所示部分就是合格的剪取。 请你计算,一共有多少种不同的剪取方法。 请填写表示方案数目的整数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
*/
图1.jpg
图2.jpg
图3.jpg
答案
116
代码
public class Main {
static int cc[][] = {
{1,1,0,0,1,0,0,0,0,0,0,0},
{1,1,1,0,0,1,0,0,0,0,0,0},
{0,1,1,1,0,0,1,0,0,0,0,0},
{0,0,1,1,0,0,0,1,0,0,0,0},
{1,0,0,0,1,1,0,0,1,0,0,0},
{0,1,0,0,1,1,1,0,0,1,0,0},
{0,0,1,0,0,1,1,1,0,0,1,0},
{0,0,0,1,0,0,1,1,0,0,0,1},
{0,0,0,0,1,0,0,0,1,1,0,0},
{0,0,0,0,0,1,0,0,1,1,1,0},
{0,0,0,0,0,0,1,0,0,1,1,1},
{0,0,0,0,0,0,0,1,0,0,1,1},
};
public static void main(String[] args) {
int a,b,c,d,e,sum=0;
for(a=0;a<8;a++) {
for(b=a+1;b<9;b++) {
for(c=b+1;c<10;c++) {
for(d=c+1;d<11;d++) {
for(e=d+1;e<12;e++) {
int z[] = {a,b,c,d,e};
if(f(z)){
System.out.println(a+1+" "+(b+1)+" "+(c+1)+" "+(d+1)+" "+(e+1));
sum++;
}
}
}
}
}
}
System.out.println(sum);
}
private static boolean f(int[] a) {
int is[] = new int[5];
is[0] = 1;
g(a,0,is);
int zz=0;
for(int i:is){
if(i==1)zz++;
}
if(zz==5) return true;
return false;
}
private static void g(int[] a, int b, int[] c){
for(int i=0;i<c.length;i++){
if(c[i]==0){
if(cc[a[b]][a[i]]==1){
c[i] = 1;
g(a,i,c);
}
}
}
}
}
解析
这道题也是属于排列组合的题,只不过不是前面的全排列,而是从12个数中无前后顺序的抽取5个,然后判断抽出的5个是否满足要求,若是则计数++,否则return ;
我的解法思路是:用5个for循环嵌套来分别表示这从小到大的5个数,其中的条件也是互相有关联的,用这种方法来抽取5个数并存入数组中,然后用f函数来验证所抽取的是否满足条件,g方法的作用是深度遍历,从数组中第一个数开始按照条件向 足相邻条件的那一项 遍历,并且用is[]数组来做标记,当这一次遍历结束时,判断是否全部遍历,如果是则满足条件return true,否则没有
return false;
在判断是否满足相邻关系的那个地方,因为觉得找出逻辑关系很麻烦,所以就自己手动写了一个二位数组,用来判断从1-12,这12个数的两两相邻情况,1则相邻,0则不相邻。
1是因为懒,2是因为方便,省时间
可以充分的把一些不是怎么变的东西,用人脑来完成
第七届蓝桥杯javaB组真题解析-剪邮票(第七题)的更多相关文章
- 2016年第七届蓝桥杯javaB组 试题 答案 解析
1.煤球数目 有一堆煤球,堆成三角棱锥形.具体: 第一层放1个, 第二层3个(排列成三角形), 第三层6个(排列成三角形), 第四层10个(排列成三角形), .... 如果一共有100层,共有多少个煤 ...
- 第七届蓝桥杯javaB组真题解析-分小组(第四题)
题目 /* 分小组 9名运动员参加比赛,需要分3组进行预赛. 有哪些分组的方案呢? 我们标记运动员为 A,B,C,... I 下面的程序列出了所有的分组方法. 该程序的正常输出为: ABC DEF G ...
- 第七届蓝桥杯javaB组真题解析-凑算式(第三题)
题目 /* 凑算式 B DEF A + --- + ------- = 10 C GHI (如果显示有问题,可以参见[图1.jpg]) 这个算式中A~I代表1~9的数字,不同的字母代表不同的数字. 比 ...
- 第七届蓝桥杯javaB组真题解析-生日蜡烛(第二题)
题目 /* 生日蜡烛 某君从某年开始每年都举办一次生日party,并且每次都要吹熄与年龄相同根数的蜡烛. 现在算起来,他一共吹熄了236根蜡烛. 请问,他从多少岁开始过生日party的? 请填写他开始 ...
- 第七届蓝桥杯javaB组真题解析-煤球数目(第一题)
题目 /* 煤球数目 有一堆煤球,堆成三角棱锥形.具体: 第一层放1个, 第二层3个(排列成三角形), 第三层6个(排列成三角形), 第四层10个(排列成三角形), .... 如果一共有100层,共有 ...
- 第七届蓝桥杯javaB组真题解析-四平方和(第八题)
题目 /* 四平方和 四平方和定理,又称为拉格朗日定理: 每个正整数都可以表示为至多4个正整数的平方和. 如果把0包括进去,就正好可以表示为4个数的平方和. 比如: 5 = 0^2 + 0^2 + 1 ...
- 第七届蓝桥杯javaB组真题解析-方格填数(第六题)
题目 /* 方格填数 如下的10个格子 +--+--+--+ | | | | +--+--+--+--+ | | | | | +--+--+--+--+ | | | | +--+--+--+ (如果显 ...
- 第七届蓝桥杯javaB组真题解析-抽签(第五题)
题目 /* 抽签 X星球要派出一个5人组成的观察团前往W星. 其中: A国最多可以派出4人. B国最多可以派出2人. C国最多可以派出2人. .... 那么最终派往W星的观察团会有多少种国别的不同组合 ...
- 第七届蓝桥杯JavaB组省赛真题
解题代码部分来自网友,如果有不对的地方,欢迎各位大佬评论 题目1.煤球数量 煤球数目 有一堆煤球,堆成三角棱锥形.具体: 第一层放1个, 第二层3个(排列成三角形), 第三层6个(排列成三角形), 第 ...
随机推荐
- auto_ptr的VC版本源码剖析
auto_ptr是当前C++标准库(STL)中提供的一种智能指针,包含于头文件 #include<memory> .auto_ptr 能够方便的管理单个堆内存对象,在你不用的时候自动帮你释 ...
- 数学算法(一):快速求斐波那契数第n项通过黄金分割率公式
有一个固定的数学公式= =,不知道的话显然没法应用 首先黄金分割率接近于这个公式, (以下为黄金分割率与斐波那契的关系,可跳过) 通过斐波那契数列公式 两边同时除以 得: (1) 注意后一项比前一项接 ...
- 【visio】故障树分析图
率属于 商务 故障树是从一个可能的事故开始,自上而下.一层层的寻找顶事件的直接原因和间接原因事件,直到基本原因事件,并用逻辑图把这些事件之间的逻辑关系表达出来. 主要的应用场景:分析复杂问题原因,一个 ...
- IDF-CTF-简单的Elf逆向Writeup
ElfCrackMe1 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !imp ...
- logging basic
logging模块是Python内置的标准模块,主要用于输出运行日志,可以设置输出日志的等级.日志保存路径.日志文件回滚等. 相比print,具备如下优点: 可以通过设置不同的日志等级, ...
- 03-书城bean类中的id缺少get属性
错误:id属性不可读 解决方法: 测试了删除的整个流程,dao-service-servlet ,数据库也能正常测试 想不出来为什么会bean类报错 后来仔细一看id的get属性不知道什么时候被误删了 ...
- 如何使用git和github
转载:https://www.cnblogs.com/cxscode/p/8325064.html 如何用git将项目代码上传到github 先上常用语句 git add . git commit - ...
- [转]Serverless
说起当前最火的技术,除了最新的区块链,AI,还有一个不得不提的概念是Serverless.Serverless作为一种新型的互联网架构直接或间接推动了云计算的发展,从AWS Lambda到阿里云函数计 ...
- java中路径的问题
在java中,涉及路径的问题有很多,不管在windows还是linux系统中,不要纠结”/“分隔符的使用,在windows系统中,资源加载器会自动的将”/“转换成”\“. 在java中获取资源的方式有 ...
- js递归生成树形下拉菜单
需求:我需要把一个单表的数据转换成类似菜单那种如图所示:我呢需要把这个菜单树放入到下框里面去如图所示: 下面是实现思路:1.第一步1.1var afTypeJson=${afTypeJson}// 这 ...