第八届蓝桥杯C/C++程序设计本科B组决赛 ——瓷砖样式(填空题)【DP?我的暴力排列搜索】
大致思路:
很努力的题解:
using namespace std;
int a[][];
int n,m;
int dir[][]={{,},{,} }; int is_range(int x,int y){//判断当前点在范围内返回1
if(x<||x>n||y>m||y<)
return ;
return ;
}
int grid(int x,int y){
if(is_range(x-,y-)==)return ;//判断右下角起往左上 是否出现2*2的小格子是同一种颜色
int t=a[x][y];
if(t!=-&&t==a[x-][y]&&t==a[x][y-]&&t==a[x-][y-])
return ;
return ;
}
set<int>has; int gethash(int a[][],int n,int m){//将整个图用string的“01”串进行存进来
int s=;
for(int i=;i<=n;i++){
for(int j=;j<=m;j++){
s=(s<<) + a[i][j];
// s+=ch;
}
}
return s;
} int ans=;
int check(int i0,int j0,int i1,int j1){
if(grid(i0,j0)||grid(i1,j1))
return ;
return ;
}
void dfs(int i0,int j0,int i1,int j1,int step,int n,int m){//step表示本次搜索应该搜索第step块了
if(check(i0,j0,i1,j1)==)//出现四块瓷砖是相同的
return ;
if(step==){ ///搜索结束条件,全局已经铺满了15个方块数了
int str=gethash(a,n,m);//返回当前局面
if(has.count(str)==){
ans++;has.insert(str);
printf("**step=%d,a[]=%10d,ans=%4d\n",step,str,ans);
} return ;
}
//int str=gethash(a,n,m);//返回当前局面printf(" step=%d,a[]=%10d,ans=%4d\n",step,str,ans); for(int i=;i<=n;i++){
for(int j=;j<=m;j++){
if(a[i][j]==-){ //该地为空
for(int k=;k<=;k++){//横着或者竖着放一块瓷砖;
int dx,dy;
dx=i+dir[k][];
dy=j+dir[k][];
if(is_range(dx,dy)==||a[dx][dy]!=-)continue;//越界,重复
for(int col=;col<=;col++){ //两种颜色
a[i][j]=a[dx][dy]=col;
dfs(i,j,dx,dy,step+,n,m);
a[i][j]=a[dx][dy]=-;
}
}
return ;
}
}
}
return ;
} int main(){
ans=;
has.clear();//清空set
memset(a,-,sizeof(a));//瓷砖黄色——值0,瓷砖橙色--1
// n=2;m=3;
n=;m=;
dfs(,,,,,n,m);
printf("%d\n",ans); return ;
}
(代码有详细注释)


———————所以本题我的最终答案是120302!———————————
第八届蓝桥杯C/C++程序设计本科B组决赛 ——瓷砖样式(填空题)【DP?我的暴力排列搜索】的更多相关文章
- 第八届蓝桥杯C/C++程序设计本科B组决赛 ——发现环(编程大题_签到题_tarjan判环)
标题:发现环 小明的实验室有N台电脑,编号1~N.原本这N台电脑之间有N-1条数据链接相连,恰好构成一个树形网络.在树形网络上,任意两台电脑之间有唯一的路径相连. 不过在最近一次维护网络时,管理员误操 ...
- 2015年第六届蓝桥杯C/C++程序设计本科B组决赛
1.积分之谜(枚举) 2.完美正方形 3.关联账户(并查集) 4.密文搜索 5.居民集会 6.模型染色 1.积分之迷 小明开了个网上商店,卖风铃.共有3个品牌:A,B,C.为了促销,每件商品都会返固定 ...
- 2015年第六届蓝桥杯C/C++程序设计本科B组决赛 ——居民集会(编程大题)
标题:居民集会 蓝桥村的居民都生活在一条公路的边上,公路的长度为L,每户家庭的 位置都用这户家庭到公路的起点的距离来计算,第i户家庭距起点的距 离为di.每年,蓝桥村都要举行一次集会.今年,由于村里的 ...
- 2016年第七届蓝桥杯C/C++程序设计本科B组决赛
2.答案300 刁丝卫代码,比赛时long long写成int,结果成了263...一等擦肩而过... #include <iostream> #include <fstream&g ...
- 2014年第五届蓝桥杯C/C++程序设计本科B组决赛
1.年龄巧合(枚举) 2.出栈次序(推公式/Catalan数) 3.信号匹配(kmp) 4.生物芯片(完全平方数) 5.Log大侠(线段树) 6.殖民地 1.年龄巧合 小明和他的表弟一起去看电影,有人 ...
- 2013年第四届蓝桥杯C/C++程序设计本科B组决赛
1.猜灯谜(枚举) 2.连续奇数和(等差数列) 3.空白格式化(去除空格) 4.高僧斗法(阶梯nim) 5.格子刷油漆(dp) 6.农场阳光 1.猜灯谜 A 村的元宵节灯会上有一迷题:请猜谜 * 请猜 ...
- 2012年第三届蓝桥杯C/C++程序设计本科B组决赛
1.星期几(取余/excel) 2.数据压缩 3.拼音字母(比较) 4.DNA比对(dp) 5.方块填数 1.星期几[结果填空] (满分5分) 1949年的国庆节(10月1日)是星期六. ...
- 2015年第六届蓝桥杯C/C++程序设计本科B组决赛 完美正方形
完美正方形 如果一些边长互不相同的正方形,可以恰好拼出一个更大的正方形,则称其为完美正方形.历史上,人们花了很久才找到了若干完美正方形.比如:如下边长的22个正方形 2 3 4 6 7 8 12 13 ...
- 第七届蓝桥杯C/C++程序设计本科B组决赛 ——机器人塔(程序大题)
机器人塔 X星球的机器人表演拉拉队有两种服装,A和B.他们这次表演的是搭机器人塔. 类似: A B B A B A A A B B B B B A BA B A B B A 队内的组塔规则是: A 只 ...
随机推荐
- iOS 多线程的简单理解(4) 线程锁的简单使用
要用到多线程 ,就不得不考虑,线程之间的交互,线程是否安全 推荐一个原文链接 是关于 线程锁的基本使用的 http://blog.csdn.net/qq_30513483/article/detai ...
- Docker 安装运行MySQL
1.镜像主页 https://hub.docker.com/_/mysql 2.拉取5.7版本 docker pull mysql:5.7 3.或者拉取最新8.x版本 docker pull mysq ...
- 【VS开发】从sockaddr中取得客户端或者数据源的Ip地址和端口号
在socket编程中,服务器端accept()等待一个客户端的连接,当连接成功后,accept拷贝客户端的地址信息到sin_addr里面,我们如何从sin_addr取得此客户端的Ip地址和端口号呢? ...
- 反馈神经网络Hopfield网络
一.前言 经过一段时间的积累,对于神经网络,已经基本掌握了感知器.BP算法及其改进.AdaLine等最为简单和基础的前馈型神经网络知识,下面开启的是基于反馈型的神经网络Hopfiled神经网络.前馈型 ...
- 使用Jedis出现Connection refused的解决方案
1.修改redis.conf配置文件中的 bind 127.0.0.1 为本机外网IP: 2. cluster-enabled yes 设置是否集群操作,如果是的话开启 yes,否的话 设置n ...
- vmware linux 硬盘空间不足时增加硬盘并挂载
不同的版本的vmware在设置界面中可能稍有不同,基本是一致的. 还有一种方式是扩展,这里没有记录,扩展时需要在虚拟机关机状态下. 1.选择在vmware中点击设置并打开,将光标定位在hard Dis ...
- PHP与Memcached服务器交互的分布式实现源码分析
转自: http://blog.csdn.net/hguisu/article/details/7353595 前段时间,因为一个项目的关系,研究了php通过调用memcache和memcached ...
- 定时任务-C#线程类 windows服务
原理 最常用的就是C#中 timer类写一个定时方法,然后在把他宿主到windows服务里面. C#中Timer分类 关于C# Timer类 在C#里关于定时器类就有3个 C# Timer使用的方法 ...
- C#中HttpWebRequest、WebClient、HttpClient的使用
HttpWebRequest: 命名空间: System.Net,这是.NET创建者最初开发用于使用HTTP请求的标准类.使用HttpWebRequest可以让开发者控制请求/响应流程的各个方面,如 ...
- nohup 后台运行脚本,且可以实时查看日志
-u加在python上 python命令加上-u(unbuffered)参数后会强制其标准输出也同标准错误一样不通过缓存直接打印到屏幕. 这是因为python的缓存机制所决定的 如果是使用 nohup ...