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 ...
随机推荐
- Communications link failure due to underlying exception异常处理(转)
最近的一个项目在Hibernate使用C3P0的连接池,数据库为Mysql.开发测试没有问题,在运行中每个一段长的空闲时间就出现异常: java 代码 org.hibernate.exception. ...
- Odoo 去掉 恼人的 "上午"和"下午"
- Git常见报错及解决方案
报错一: You have not concluded your merge (MERGE_HEAD exists). Please, commit your changes before you c ...
- 使用Ajax异步上传图片的方法(html,javascript,php)
前两天项目中需要用到异步上传图片和显示上传进度的功能,于是找了很多外国的文章,翻山越岭地去遇上各种坑,这里写篇文章记录一下. HTML <form id="fileupload-for ...
- Java知多少(35)Object类
Object 类位于 java.lang 包中,是所有 Java 类的祖先,Java 中的每个类都由它扩展而来. 定义Java类时如果没有显示的指明父类,那么就默认继承了 Object 类.例如: p ...
- python中的selectors模块
它的功能与linux的epoll,还是select模块,poll等类似:实现高效的I/O multiplexing, 常用于非阻塞的socket的编程中: 简单介绍一下这个模块,更多内容查看 pyt ...
- 牛客网_Go语言相关练习_选择题(1)
声明:题目源自牛客网. 一.单项选择题 解析:作为形参时,可以要求单向,只读或只写. 解析:Go语言的内存回收机制规定,只要有一个指针指向引用一个变量,那么这个变量就不会被释放(内存逃逸),因此在Go ...
- .net 上传文件大小限制
1.ii. System.web下修改节点HttpRuntime为 <system.web> <compilation debug="true" targetFr ...
- 使用gdbserver远程调试
使用gdbserver远程调试 1.默认crosstool交叉编译器没有自带gdbserver,需要自行编译 到GNU官方FTP下载,目前最新版的是gdb-6.7.1下载地址:http://ftp ...
- TSPL学习笔记(1)
扩展语法(Syntactic extensions) 扩展语法就是通过核心语法或已经定义的扩展语法创建一种新的语法模式. Scheme核心语法模式包括: 顶层定义 常量 变量 过程应用 '(quote ...