2016年蓝桥杯省赛A组c++第3题(图论)
/*
有一个含有10个格子的图形,现用0~9填充,连续的数不能填充在相邻的格子中(包括对角线相邻)。
现每个数只能填写一次,问有多少种填充方法?
0111
1111
1110
(1表示有格子,0表示没格子) 解题思想:深度优先遍历即可
*/ #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 t; //t用于存放已经填写了的格子数目
int flag[]; //记录数字是否选
int map[][]; //格子表
int sum=; //sum为可行解的数目 int judge()//判断已经填好的表是否符合要求
{
int i,j;
for(i=;i<;i++)
{
for(j=;j<;j++)
if(abs(map[i][j]-map[i][j+])==/*左右*/||abs(map[i][j]-map[i+][j])==/*上下*/||abs(map[i][j]-map[i+][j-])==/*左上角*/||abs(map[i][j]-map[i+][j+])/*右上角*/==)
return ;
}
return ;
} //dfs函数用于填表
void dfs(int t)
{
int i;
if(t==)//t=11,即此时表中的10个格子全部填了数
{
if(judge()) sum++;
return;
}
for(i=;i<=;i++)
{
if(!flag[i])
{
flag[i]=;
map[t/][t%]=i;
dfs(t+);
flag[i]=; //若递归返回,则说明该解不可行。回溯思想。
}
}
} int main()
{
int i;
for(i=;i<;i++)
{
map[i][]=;
}
memset(flag,,sizeof(flag)); //记号表归零
for(i=;i<;i++)
map[][i]=; //画表格图
map[][]=map[][]=;
dfs();
printf("%d\n",sum);
return ;
}
tz@COI HZAU
2018/3/15
2016年蓝桥杯省赛A组c++第3题(图论)的更多相关文章
- 2016年蓝桥杯省赛A组c++第7题(图论)
/* 有12张连在一起的12生肖的邮票,规格是3*4,即: 1111 1111 1111 现在你要从中剪下5张来,要求必须是连着的.(仅仅连接一个角不算相连) */ /* 思路: 先将所有五个一组的情 ...
- 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 ...
随机推荐
- 空间谱专题13:联合解算DOA(ML/AP)
其中作者:桂. 时间:2017-10-16 07:51:40 链接:http://www.cnblogs.com/xingshansi/p/7675380.html 前言 主要记录二维测向中,分别利 ...
- 【Tomcat】Servlet 工作原理解析
Web 技术成为当今主流的互联网 Web 应用技术之一,而 Servlet 是 Java Web 技术的核心基础.因而掌握 Servlet 的工作原理是成为一名合格的 Java Web 技术开发人员的 ...
- Android Launcher分析和修改11——自定义分页指示器(paged_view_indicator)
Android4.0的Launcher自带了一个简单的分页指示器,就是Hotseat上面那个线段,这个本质上是一个ImageView利用.9.png图片做,效果实在是不太美观,用测试人员的话,太丑了. ...
- Java数据类型转换规则
- SQL 逗号分隔将一行拆成多行
and number<=len(a.KOrderID) and type=)=',')
- 牛客网_Go语言相关练习_选择题(2)
注:题目来源均出自牛客网. 一.选择题 Map(集合)属于Go的内置类型,不需要引入其它库即可使用. Go-Map_菜鸟教程 在函数声明中,返回的参数要么都有变量名,要么都没有. C选项函数声明语法有 ...
- 什么是对象:EVERYTHING IS OBJECT(万物皆对象)
所有的事物都有两个方面: 有什么(属性):用来描述对象. 能够做什么(方法):告诉外界对象有那些功能. 后者以前者为基础. 大的对象的属性也可以是一个对象.
- Oracle清理回收站的方法
原文链接:http://blog.itpub.net/18841027/viewspace-1057765/ purge DBA_RECYCLEBIN用于删除Oracle数据库回收站的所有数据,需要s ...
- .NET解决[Serializable] Attribute引发的Json序列化k_BackingField
在WebAPI中的WebApiConfig直接加入如下配置 有问题找谷歌
- [JS] Topic - hijack this by "apply" and "call"
Ref: 详解js中的apply与call的用法 call 和 apply二者的作用完全一样,只是接受参数的方式不太一样. 参数形式: Function.apply(obj,args) call方法与 ...