2016年蓝桥杯省赛A组c++第7题(图论)
- /*
- 有12张连在一起的12生肖的邮票,规格是3*4,即:
- 1111
- 1111
- 1111
- 现在你要从中剪下5张来,要求必须是连着的。(仅仅连接一个角不算相连)
- */
- /*
- 思路:
- 先将所有五个一组的情况遍历,然后用广度优先判断是否连通。
- */
- #include<cstdio>
- #include<cstring>
- #include<algorithm>
- #include<iostream>
- #include<string>
- #include<vector>
- #include<stack>
- #include<bitset>
- #include<cstdlib>
- #include<cmath>
- #include<set>
- #include<list>
- #include<deque>
- #include<map>
- #include<queue>
- using namespace std;
- int a[]= {,,,,,,,,,,,};//邮票数组
- int vis[]; //规格:4*5
- /*
- 在逻辑上可以将vis数组看成:
- 01 02 03 04 00
- 06 07 08 09 00
- 11 12 13 14 00
- 00 00 00 00 00
- */
- int main()
- {
- int sum=; //可行解的总数
- for(int i1=; i1<; i1++)
- for(int i2=i1+; i2<; i2++)
- for(int i3=i2+; i3<; i3++)
- for(int i4=i3+; i4<; i4++)
- for(int i5=i4+; i5<; i5++)
- {
- memset (vis,,sizeof(vis)); //每次验证一个解是否可行之前先将标志数组初始化
- int p=; //当前解的连通度
- vis[a[i1]]=; //a[]是邮票数组
- vis[a[i2]]=;
- vis[a[i3]]=;
- vis[a[i4]]=;
- vis[a[i5]]=;
- queue<int>q; //声明一个队列q
- q.push(a[i1]); //初始节点入队
- vis[a[i1]]=; //入队节点的对应的标志归零
- while(!q.empty())
- {
- int top=q.front();
- q.pop();
- p++;
- if(vis[top+]) { q.push(top+);vis[top+]=; } //验证右连通
- if(vis[top+]) { q.push(top+);vis[top+]=; } //验证下连通
- if(vis[top-]) { q.push(top-);vis[top-]=; } //验证左连通
- if(vis[top-]) { q.push(top-);vis[top-]=; } //验证上连通
- }
- if(p==) //全连通时p==5
- {
- sum++;
- cout<<a[i1]<<" "<<a[i2]<<" "<<a[i3]<<" "<<a[i4]<<" "<<a[i5]<<endl;
- }
- }
- cout<<sum<<endl;
- return ;
- }
tz@COI HZAU
2018/3/16
2016年蓝桥杯省赛A组c++第7题(图论)的更多相关文章
- 2016年蓝桥杯省赛A组c++第3题(图论)
/* 有一个含有10个格子的图形,现用0~9填充,连续的数不能填充在相邻的格子中(包括对角线相邻). 现每个数只能填写一次,问有多少种填充方法? 0111 1111 1110 (1表示有格子,0表示没 ...
- 2016年蓝桥杯省赛A组c++第9题(逆序串问题)
/* X星球的考古学家发现了一批古代留下来的密码. 这些密码是由A.B.C.D 四种植物的种子串成的序列. 仔细分析发现,这些密码串当初应该是前后对称的(也就是我们说的镜像串). 由于年代久远,其中许 ...
- 2016年蓝桥杯省赛A组c++第8题(暴力求解)
/* 四平方和定理,又称为拉格朗日定理: 每个正整数都可以表示为至多4个正整数的平方和. 如果把0包括进去,就正好可以表示为4个数的平方和. 比如: 5 = 0^2 + 0^2 + 1^2 + 2^2 ...
- 2016年蓝桥杯省赛A组c++第5题(计算机组成原理)
/* 下面的代码把一个整数的二进制表示的最右边的连续的1全部变成0 如果最后一位是0,则原数字保持不变. 如果采用代码中的测试数据,应该输出: 0000000000000000000000000110 ...
- 2016年蓝桥杯省赛A组c++第4题(算法填空)
/* 排序在各种场合经常被用到. 快速排序是十分常用的高效率的算法. 其思想是:先选一个“标尺”, 用它把整个队列过一遍筛子, 以保证:其左边的元素都不大于它,其右边的元素都不小于它. 这样,排序问题 ...
- 2016年蓝桥杯省赛A组c++第2题(暴力求解)
/* 某君从某年开始每年都举办一次生日party,并且每次都要吹熄与年龄相同根数的蜡烛. 现在算起来,他一共吹熄了236根蜡烛. 请问,他从多少岁开始过生日party的? 请填写他开始过生日party ...
- 2016年蓝桥杯省赛A组c++第1题
/* 某君新认识一网友. 当问及年龄时,他的网友说: “我的年龄是个2位数,我比儿子大27岁, 如果把我的年龄的两位数字交换位置,刚好就是我儿子的年龄” 请你计算:网友的年龄一共有多少种可能情况? 提 ...
- 2012年蓝桥杯省赛A组c++第3题(喝断片的海盗)
/* 有一群海盗(不多于20人),在船上比拼酒量.过程如下:打开一瓶酒, 所有在场的人平分喝下,有几个人倒下了.再打开一瓶酒平分,又有倒下的, 再次重复...... 直到开了第4瓶酒,坐着的已经所剩无 ...
- 2015年蓝桥杯省赛A组c++第5题(回溯算法填空)
/* 1,2,3…9 这九个数字组成一个分数,其值恰好为1/3,如何组法? 下面的程序实现了该功能,请填写划线部分缺失的代码. */ #include <stdio.h> void tes ...
随机推荐
- 译:2. RabbitMQ Java Client 之 Work Queues (工作队列)
在上篇揭开RabbitMQ的神秘面纱一文中,我们编写了程序来发送和接收来自命名队列的消息. 本篇我们将创建一个工作队列,工作队列背后的假设是每个任务都交付给一个工作者 本篇是译文,英文原文请移步:ht ...
- python实现合并两个文件并打印输出
# python实现合并两个文件并打印输出 import fileinput file_Path1 = input("请输入第一个合并文件:") file_Path2 = inpu ...
- Java和Scala语法比较
类型推断 挑逗指数: 四星 我们知道,Scala一向以强大的类型推断闻名于世.很多时候,我们无须关心Scala类型推断系统的存在,因为很多时候它推断的结果跟直觉是一致的. Java在2016 年也新增 ...
- iOS开发 关于启动页和停留时间的设置
引言: 在开发一款商业App时,我们大都会为我们的App设置一个启动页. 苹果官方对于iOS启动页的设计说明: 为了增强应用程序启动时的用户体验,您应该提供一个启动图像.启动图像与应用程序的首屏幕看起 ...
- vue.js是什么
Vue.js(读音 /vjuː/, 类似于 view) 是一套构建用户界面的 渐进式框架.与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计.Vue 的核心库只关注视图层,并且非常容易学习, ...
- Java知多少(101)图像缓冲技术
当图像信息量较大,采用以上直接显示的方法,可能前面一部分显示后,显示后面一部分时,由于后面一部分还未从文件读出,使显示呈斑驳现象.为了提高显示效果,许多应用程序都采用图像缓冲技术,即先把图像完整装入内 ...
- android中通过intent传递复杂数据
android中在各个service或者acitivity之间可以通过Intent来传递一些数据,intent原生直接提供了一些简单数据类型的数据的传递,使用起来也很方便,比如int boolean ...
- 树莓派集群实践2——修改树莓派3 指定IP,DNS要修改dhcpcd.conf
vim /etc/dhcpcd.conf 修改如下 interface eth0 static ip_address=192.168.1.177/24 static routers=192.168.1 ...
- Error - SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM
I find using the following works quite well for SQL min/max dates after many DB related errors: Date ...
- session一直报错Session store not set on request
Route::group(['middleware' => ['web']], function () { //});仍然报错,看了 session是使用默认file,没问题:app/stora ...