java算法 第七届 蓝桥杯B组(题+答案) 7.剪邮票

7.剪邮票  (结果填空)

如【图1.jpg】, 有12张连在一起的12生肖的邮票。
现在你要从中剪下5张来,要求必须是连着的。
(仅仅连接一个角不算相连)
比如,【图2.jpg】,【图3.jpg】中,粉红色所示部分就是合格的剪取。

请你计算,一共有多少种不同的剪取方法。

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

思路: 感觉还是先排列,从12个邮票中选5个出来,
         然后对每个邮票搜索,同一行,同一列,则表示连接到,如果连接到就定义
        该块邮票被访问过,最后判断5个邮票是否都被访问过,是就说明是连通的,
        但是这个不是全排列,应该是从12个选5个出来
        从12个选5个。判断5个是否相连,符合一个visit设为true,五个true,count++

(这个题没弄懂,参考网上的)

 1 public class _7剪邮票 {
 2        static int a[] = new int[5];
 3         public static void main(String[] args) {
 4             int count = 0;
 5             for (a[0] = 0; a[0] < 12; a[0]++) {
 6                 for (a[1] = a[0] + 1; a[1] < 12; a[1]++) {
 7                     for (a[2] = a[1] +1 ; a[2] < 12; a[2]++) {
 8                         for (a[3] = a[2]+1; a[3] < 12; a[3]++) {
 9                             for (a[4] = a[3]+1; a[4] < 12; a[4]++) {
10                                 if (judge()) {
11                                     count++;
12                                 }
13                             }
14                         }
15                     }
16                 }
17             }
18             System.out.println(count);
19         }
20         private static boolean judge() {
21             boolean visit[] = new boolean[5];
22             dfs(visit,0);
23             return visit[0]&&visit[1]&&visit[2]&&visit[3]&&visit[4];
24         }
25
26         private static void dfs(boolean[] visit, int i) {
27             visit[i] = true;
28             for (int j = 0; j < visit.length; j++) {
29                 if (!visit[j]&&(a[i]/4==a[j]/4)&&(a[i]==a[j]+1||a[i]==a[j]-1)) {
30                     dfs(visit, j);
31                 }
32                 if (!visit[j]&&(a[i]==a[j]+4||a[i]==a[j]-4)) {
33                     dfs(visit, j);
34                 }
35             }
36         }
37 }

运行结果:116

时间: 2024-10-10 14:30:01

java算法 第七届 蓝桥杯B组(题+答案) 7.剪邮票的相关文章

java算法 第七届 蓝桥杯B组(题+答案) 8.四平方和

8.四平方和  (程序设计) 四平方和定理,又称为拉格朗日定理:每个正整数都可以表示为至多4个正整数的平方和.如果把0包括进去,就正好可以表示为4个数的平方和. 比如:5 = 0^2 + 0^2 + 1^2 + 2^27 = 1^2 + 1^2 + 1^2 + 2^2(^符号表示乘方的意思) 对于一个给定的正整数,可能存在多种平方和的表示法.要求你对4个数排序:0 <= a <= b <= c <= d并对所有的可能表示法按 a,b,c,d 为联合主键升序排列,最后输出第一个表示法

16年第七届蓝桥杯第三题_

方格填数 如下的10个格子    +--+--+--+    |    |    |   |+--+--+--+--+|    |   |    |   |+--+--+--+--+|    |   |    |+--+--+--+ (如果显示有问题,也可以参看[图1.jpg]) 填入0~9的数字.要求:连续的两个数字不能相邻.(左右.上下.对角都算相邻) 一共有多少种可能的填数方案? 请填写表示方案数目的整数.注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字. 第二次做,想到的

第七届蓝桥杯—第六题||方格填数

如图,如下的10个格子,填入0~9的数字.要求:连续的两个数字不能相邻. (左右.上下.对角都算相邻)一共有多少种可能的填数方案? 请填写表示方案数目的整数. 思路:直接 暴力求解,依次向每个格子填数与已经填入的进行比较是否连续,即:是否两者之差的绝对值为1. 答案:  1580 (我考虑每个数字都不相同) #include<iostream> #include<cmath> using namespace std; int main(void){ int count=0; for

第七届蓝桥杯——第五题||抽签

抽签 X星球要派出一个5人组成的观察团前往W星. 其中: A国最多可以派出4人. B国最多可以派出2人. C国最多可以派出2人. .... 那么最终派往W星的观察团会有多少种国别的不同组合呢? 下面的程序解决了这个问题. 数组a[] 中既是每个国家可以派出的最多的名额. 程序执行结果为: DEFFF CEFFF CDFFF CDEFF CCFFF CCEFF CCDFF CCDEF BEFFF BDFFF BDEFF BCFFF BCEFF BCDFF BCDEF .... #include <

2016 第七届蓝桥杯 c/c++ B组省赛真题及解题报告

2016 第七届蓝桥杯 c/c++ B组省赛真题及解题报告 勘误1:第6题第4个 if最后一个条件粗心写错了,答案应为1580. 条件应为abs(a[3]-a[7])!=1,宝宝心理苦啊.!感谢zzh童鞋的提醒. 勘误2:第7题在推断连通的时候条件写错了,后两个if条件中是应该是<=12 落了一个等于号.正确答案应为116. 1.煤球数目 有一堆煤球.堆成三角棱锥形.详细: 第一层放1个, 第二层3个(排列成三角形), 第三层6个(排列成三角形), 第四层10个(排列成三角形). -. 假设一共

第七届蓝桥杯C语言C组-(自己懂的题目)

第七届蓝桥杯C语言C组-(自己懂的题目) 表示刚刚查了成绩,省赛一等奖,有资格去北京了,然后写一下总结, 先来写一下我懂的题目,毕竟我也是菜鸟,听说国赛比预赛难几个等级... 第一题 报纸页数 X星球日报和我们地球的城市早报是一样的, 都是一些单独的纸张叠在一起而已.每张纸印有4版. 比如,某张报纸包含的4页是:5,6,11,12, 可以确定它应该是最上边的第2张报纸. 我们在太空中捡到了一张X星球的报纸,4个页码分别是: 1125,1126,1727,1728 请你计算这份报纸一共多少页(也就

第七届蓝桥杯省赛7:剪邮票

第七届蓝桥杯省赛7:剪邮票 如[图1.jpg], 有12张连在一起的12生肖的邮票. 现在你要从中剪下5张来,要求必须是连着的. (仅仅连接一个角不算相连) 比如,[图2.jpg],[图3.jpg]中,粉红色所示部分就是合格的剪取. 请你计算,一共有多少种不同的剪取方法. 请填写表示方案数目的整数. 注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字. 解决思路:先将所有五个一组的情况遍历,然后用广度优先判断是否连通. 我在选五个一组的时候是用的 for 先选出第几个邮票,然后将其

算法笔记_212:第七届蓝桥杯软件类决赛真题(Java语言B组)

目录 1 愤怒小鸟 2 反幻方 3 打靶 4 路径之谜 5 碱基 6 圆圈舞 前言:以下代码仅供参考,若有错误欢迎指正哦~ 1 愤怒小鸟 愤怒小鸟 X星球愤怒的小鸟喜欢撞火车! 一根平直的铁轨上两火车间相距 1000 米 两火车 (不妨称A和B) 以时速 10米/秒 相对行驶. 愤怒的小鸟从A车出发,时速50米/秒,撞向B车, 然后返回去撞A车,再返回去撞B车,如此往复.... 两火车在相距1米处停车. 问:这期间愤怒的小鸟撞 B 车多少次? 注意:需要提交的是一个整数(表示撞B车的次数),不要

第七届蓝桥杯省赛C/C++B组赛题及答案

第一题 [题目] 煤球数目 有一堆煤球,堆成三角棱锥形.具体:第一层放1个,第二层3个(排列成三角形),第三层6个(排列成三角形),第四层10个(排列成三角形),....如果一共有100层,共有多少个煤球? 请填表示煤球总数目的数字.注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字. [提示] 找出每一层煤球个数的规律,循环累加计算 [答案] 1 #include<stdio.h> 2 int main() 3 { 4 int i,s=1,num=1; 5 for(i=2;i&