第七届蓝桥杯JavaB组——第7题剪邮票
题目:
剪邮票
如【图1.jpg】, 有12张连在一起的12生肖的邮票。
现在你要从中剪下5张来,要求必须是连着的。
(仅仅连接一个角不算相连)
比如,【图2.jpg】,【图3.jpg】中,粉红色所示部分就是合格的剪取。
请你计算,一共有多少种不同的剪取方法。
请填写表示方案数目的整数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
/**
* @author LZP
* @date 2021年2月27日
* @Description
* @version 1.0
*/
public class p7 {
private static int count;
/**
* 辅助数组
* 作用:将原本代表十二生肖的1~12个数字改为0~11,这样便于后面判断两个数是否在同一行或同一列
*/
private static int[] dp = new int[12];
/**
* 存放剪下来的5个数
*/
private static int[] arr = new int[5];
public static void main(String[] args) {
division(1, 0);
System.out.println(count);
}
public static void division(int pos, int curIndex) {
if (pos > 5) {
// 此时已经剪好了5个生肖(即5个数),可以开始判断这5个生肖剪下来是否是连续的
// 这里定义一个boolean数组,如果5个值都是true,那么则表示这5个生肖剪下来是连续的
boolean[] visits = new boolean[5];
isContinue(visits, 0);
if (visits[0] && visits[1] && visits[2] && visits[3] && visits[4]) {
count++;
}
return;
}
for (int i = curIndex; i < dp.length; i++) {
arr[pos - 1] = i;
/*
* 这里要注意的是:
* 下一个递归的数是从i + 1开始,而不是curIndex + 1开始,因为要一直从后连续的找,
* 所以必须是 当前数的下一个数作为基准开始
*/
division(pos + 1, i + 1);
}
}
public static void isContinue(boolean[] visits, int index) {
// 此时访问了下标为index的数
visits[index] = true;
// 依次遍历visits数组,如果发现对应下标的值是false,那么表示该数还没有被访问
for (int i = 0; i < visits.length; i++) {
// 先判断此时下标i这个数是否已经被访问,若已被访问,则不做任何事情,反之则继续进行后续判断
// 判断是否在同一行其相邻
if (!visits[i] && (arr[i] / 4 == arr[index] / 4) && (arr[i] + 1 == arr[index] || arr[i] - 1 == arr[index])) {
// 递归
// 把下标为i的这个数作为开始,让它再去依次遍历visits数组,看有没有和它相邻的,如果有,就继续重复这个步骤下去
isContinue(visits, i);
}
// 判断是否在同一列且在邻行
if (!visits[i] && (arr[i] - 4 == arr[index] || arr[i] + 4 == arr[index])) {
// 递归
// 把下标为i的这个数作为开始,让它再去依次遍历visits数组,看有没有和它相邻的,如果有,就继续重复这个步骤下去
isContinue(visits, i);
}
}
}
}
答案:
116
第七届蓝桥杯JavaB组——第7题剪邮票的更多相关文章
- 第七届蓝桥杯JavaB组——第6题方格填数
解决方案:利用全排列和递归 使用Java中的集合API:HashMap ArrayList package com.lzp.lanqiaoseven.p6; import java.util.*; / ...
- 2016年第七届蓝桥杯javaB组 试题 答案 解析
1.煤球数目 有一堆煤球,堆成三角棱锥形.具体: 第一层放1个, 第二层3个(排列成三角形), 第三层6个(排列成三角形), 第四层10个(排列成三角形), .... 如果一共有100层,共有多少个煤 ...
- 第七届蓝桥杯JavaB组省赛真题
解题代码部分来自网友,如果有不对的地方,欢迎各位大佬评论 题目1.煤球数量 煤球数目 有一堆煤球,堆成三角棱锥形.具体: 第一层放1个, 第二层3个(排列成三角形), 第三层6个(排列成三角形), 第 ...
- 第七届蓝桥杯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组真题解析-剪邮票(第七题)
题目 /* 剪邮票 如[图1.jpg], 有12张连在一起的12生肖的邮票. 现在你要从中剪下5张来,要求必须是连着的. (仅仅连接一个角不算相连) 比如,[图2.jpg],[图3.jpg]中,粉红色 ...
随机推荐
- 2019牛客国庆集训派对day2
A(模拟): #include <bits/stdc++.h> using namespace std; const int inf = 0x3f3f3f3f; const double ...
- LaTeX 环境安装&编译器配置
推荐网站:https://www.latexstudio.net/articles/ (基本所有的latex疑惑都可以在这里得到解决) 入门视频:两小时短小精悍,让你轻松入门,https://www. ...
- 2020 ICPC Universidad Nacional de Colombia Programming Contest
2020 ICPC Universidad Nacional de Colombia Programming Contest A. Approach 三分 显然答案可以三分,注意\(eps\)还有两条 ...
- 西南民族大学第十二届程序设计竞赛(同步赛) A.逃出机房 (bfs)
题意:有来两个人A和B,A追B,A和B每次向上下左右移动一个单位,一共有两扇门,问A是否可以追上B(在门口追上也算合法). 题解:当时看题意说在门口也算?就觉得是判断两个人到门口的时间,对他们两个人分 ...
- 在kubernetes集群里集成Apollo配置中心(1)之交付Apollo-adminservice至Kubernetes集群
1.部署apollo-adminservice软件包 apollo-adminservice软件包链接地址:https://github.com/ctripcorp/apollo/releases/d ...
- java 提供了哪些IO方式
今天听了杨晓峰老师的java 36讲,感觉IO这块是特别欠缺的,所以讲义摘录如下: 欢迎大家去订阅: 本文章转自:https://time.geekbang.org/column/article/83 ...
- 云原生系列3 pod核心字段
pod是容器化的基础,好比大楼的地基. Pod跟容器的关系 类比一下: POD: 物理机容器: 物理机上的一个进程: 容器只是Pod的一个普通字段. Pod的作用范围 跟容器的linux namesp ...
- pagehide event & sendBeacon
pagehide event & sendBeacon 通过 API 测试 pagehide 是否触发了 pagehide 不支持正常的 fetch 请求发送 pagehide 仅支持 sen ...
- Vue Login Form Component
Vue Login Form Component Account Login <template> <div> <slot></slot> <el ...
- CSS clip-path in action
CSS clip-path in action <!DOCTYPE html> <html lang="en"> <head> <meta ...