题目

/*
剪邮票 如【图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. 从相亲的角度理解 K8S 的 Node Affinity, Taints 与 Tolerations

    这是昨天晚上阅读园子里的2篇 k8s 博文时产生的想法,在随笔中记录一下. 这2篇博文是 K8S调度之节点亲和性 与 K8S调度之Taints and Tolerations . 如果我们把 node ...

  2. HttpServer带阻塞性能比较

    服务端在返回hello,world! 之前先阻塞一秒钟,模拟访问DB等耗时操作. Netty 我直接在 WorkerGroup 里头sleep,用同步阻塞线程模型的方式来编程,所以性能暴降. Joob ...

  3. nginx配置 yii2 URL重写规则 SSI配置使shtml

    location / { // 加上红色部分 重写url try_files $uri $uri/ /index.php?$args; if (!-e $request_filename){ rewr ...

  4. Python学习之列表篇

    浮点数类型:round(x,d)可对浮点数进行四舍五入,科学计数法:aeb表示a*10^bpython大小写敏感整数类型:无范围限制,pow(x,y)表示x^y,想算多大算多大,四种表示形式:十进制, ...

  5. 7、源与值(Source/Values)

    学习目录:树莓派学习之路-GPIO Zero 官网地址:https://gpiozero.readthedocs.io/en/stable/source_values.html 环境:UbuntuMe ...

  6. 对象的上转型和下转型 (instanceof关键字)

    1.对象的上转型,就是多态的一种写法 格式:父类名称 对象名 = new 子类名称(): Animal animal = new Cat(); 含义:右侧创建一个子类对象,把它当作父类来使用 向上转型 ...

  7. Java面向对象编程 -5.2

    静态代码块 静态代码块主要指的是使用static关键字定义的代码块 静态块的定义需要考虑到两种情况: 主类中定义静态块 非主类中定义静态块 静态块执行主要是给static属性进行初始化的 此时可以发现 ...

  8. 【PAT甲级】1089 Insert or Merge (25 分)(插入排序和归并排序)

    题意: 输入一个正整数N(<=100),接着输入两行N个整数,第一行表示初始序列,第二行表示经过一定程度的排序后的序列.输出这个序列是由插入排序或者归并排序得到的,并且下一行输出经过再一次排序操 ...

  9. C语言 排序算法

    冒泡排序 冒泡排序(英语:Bubble Sort)是一种简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序(如从大到小.首字母从A到Z)错误就把他们交换过来. 过程演示: 选 ...

  10. ASP.NET CORE 基础知识(一):概述【上】

    此为系列文章,对MSDN ASP.NET Core 的官方文档进行系统学习与翻译.其中或许会添加本人对 ASP.NET Core 的浅显理解 原文请参考MSDN ASP.NET Core. 这篇文章是 ...