题目

/*
剪邮票 如【图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组真题解析-剪邮票(第七题)的更多相关文章

  1. 2016年第七届蓝桥杯javaB组 试题 答案 解析

    1.煤球数目 有一堆煤球,堆成三角棱锥形.具体: 第一层放1个, 第二层3个(排列成三角形), 第三层6个(排列成三角形), 第四层10个(排列成三角形), .... 如果一共有100层,共有多少个煤 ...

  2. 第七届蓝桥杯javaB组真题解析-分小组(第四题)

    题目 /* 分小组 9名运动员参加比赛,需要分3组进行预赛. 有哪些分组的方案呢? 我们标记运动员为 A,B,C,... I 下面的程序列出了所有的分组方法. 该程序的正常输出为: ABC DEF G ...

  3. 第七届蓝桥杯javaB组真题解析-凑算式(第三题)

    题目 /* 凑算式 B DEF A + --- + ------- = 10 C GHI (如果显示有问题,可以参见[图1.jpg]) 这个算式中A~I代表1~9的数字,不同的字母代表不同的数字. 比 ...

  4. 第七届蓝桥杯javaB组真题解析-生日蜡烛(第二题)

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

  5. 第七届蓝桥杯javaB组真题解析-煤球数目(第一题)

    题目 /* 煤球数目 有一堆煤球,堆成三角棱锥形.具体: 第一层放1个, 第二层3个(排列成三角形), 第三层6个(排列成三角形), 第四层10个(排列成三角形), .... 如果一共有100层,共有 ...

  6. 第七届蓝桥杯javaB组真题解析-四平方和(第八题)

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

  7. 第七届蓝桥杯javaB组真题解析-方格填数(第六题)

    题目 /* 方格填数 如下的10个格子 +--+--+--+ | | | | +--+--+--+--+ | | | | | +--+--+--+--+ | | | | +--+--+--+ (如果显 ...

  8. 第七届蓝桥杯javaB组真题解析-抽签(第五题)

    题目 /* 抽签 X星球要派出一个5人组成的观察团前往W星. 其中: A国最多可以派出4人. B国最多可以派出2人. C国最多可以派出2人. .... 那么最终派往W星的观察团会有多少种国别的不同组合 ...

  9. 第七届蓝桥杯JavaB组省赛真题

    解题代码部分来自网友,如果有不对的地方,欢迎各位大佬评论 题目1.煤球数量 煤球数目 有一堆煤球,堆成三角棱锥形.具体: 第一层放1个, 第二层3个(排列成三角形), 第三层6个(排列成三角形), 第 ...

随机推荐

  1. Java进阶学习(5)之设计原则(上)

    设计原则 城堡游戏 扩展 字符串被分割 String line = in.nextLine(); String[] words = line.split(" "); 消除代码复制 ...

  2. Django框架-模型层

    Django框架-模型层 一.单表查询之必知必会13条 1.时间字段中的两个关键性参数 create_time = models.DateField() # 年月日 create_time = mod ...

  3. 升级 .net core3.1

    下载sdk3.1版本 升级包 然后build之后看提示若有其他包版本太低则按照提示将其他包升级 build --> run 报错,修复bug(主要由于包更新之后有些方法或者属性被移除造成无法使用 ...

  4. html input file 设置文件类型

    解决方案: 使用 input 的 accept 属性指定接受文件类型 -----------更新--------------- 之前的代码有个缺点,打开文件窗口时会自动筛选文件夹下所有符合设定类型的文 ...

  5. phpStudy的虚拟站点域名管理

    使用phpStudy在本地环境,使用虚拟域名访问本地站点. 步骤: 0x01  修改配置文件 打开站点域名管理 添加你本地站点的路径,第二域名可以不填,网站端口不填的话默认为80. 先点击新增,再点击 ...

  6. mysql学习笔记(四):group by,limit,to_days(),from_days()

    1. [Err] 1055 - Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated co ...

  7. SOCV / POCV 模型 (3)

    STA无疑是数字集成电路设计实现方法学中最『漂亮』的模型之一,但是随意着工艺进步,local varition 的随机性及重要性增加,传统STA 的局限性日渐突出.大概在十五年前,SSTA成了一个研究 ...

  8. 解决MinGW运行时提示丢失libgmp-10.dll

    如何解决刚安装的MinGW提示"丢失xxx.dll" 解决方案: 1.配置环境变量,出现这种问题的主要原因是因为没配置环境变量,网上的大多数解决方案也是基于这个的. 2.安装包损坏 ...

  9. source insight 编译后出现停止工作解决方法

    解决方法: 工程的路径不要有中文,都用英文

  10. 【转】Docker网络模式--默认模式bridge模式

    一 引言 当 Docker 启动时,会自动在主机上创建一个名为 docker0 虚拟网桥,这实际上就是 Linux 的一个 bridge,可以理解为一个软件交换机.它会在挂载到它的网口之间进行转发.系 ...