UVA 211 The Domino Effect 多米诺效应 (回溯)
骨牌无非两种放法,横着或竖着放,每次检查最r,c最小的没访问过的点即可。如果不能放就回溯。
最外面加一层认为已经访问过的位置,方便判断。
#include<bits/stdc++.h>const int MAXD = 56; const int MAXB = 29; const int MAXP = 7;bool used[MAXB];// used Bone int pip[MAXP][MAXP];// pip 2 Boneint tab[7][8]; int ans[8][9];int cnt; void dfs(int r,int c) {while(ans[r][c]) {if(c == 8) { r++; c = -1; }c++;}if(r == 7) {for(int i = 0; i < 7; i++){for(int j = 0; j < 8; j++){printf("%4d",ans[i][j]);}putchar('\n');}putchar('\n');cnt++;return ;}int &p0 = tab[r][c];if(!ans[r][c+1]){ // 横着放int &p1 = tab[r][c+1];int &bone = pip[p0][p1];if(!used[bone]){used[bone] = 1;ans[r][c+1] = ans[r][c] = bone;dfs(r,c+1);ans[r][c+1] = ans[r][c] = 0;used[bone] = 0;}}if(!ans[r+1][c]) { //竖着放int &p2 = tab[r+1][c];int &bone = pip[p0][p2];if(!used[bone]){used[bone] = 1;ans[r+1][c] = ans[r][c] = bone;dfs(r,c+1);ans[r+1][c] = ans[r][c] = 0;used[bone] = 0;}}}int main() {// freopen("in.txt","r",stdin);// freopen("my.txt","w",stdout);for(int h = 0,c = 0; h < 7; h++)for(int i = h; i < 7; i++){pip[i][h] = pip[h][i] = ++c;}int *layout = *tab;int cas = 0;while(~scanf("%d",layout)){if(cas) printf("\n\n\n");memset(ans,0,sizeof(ans));memset(used,0,sizeof(used));cnt = 0;for(int i = 0; i < 7; i++) ans[i][8] = 233;for(int i = 0; i < 8; i++) ans[7][i] = 233;for(int i = 1; i < MAXD; i++)scanf("%d",layout+i);printf("Layout #%d:\n\n",++cas);for(int i = 0; i < 7; i ++){for(int j = 0; j < 8; j++)printf("%4d",tab[i][j]);putchar('\n');}printf("\nMaps resulting from layout #%d are:\n\n",cas);dfs(0,0);printf("There are %d solution(s) for layout #%d.\n",cnt,cas);}return 0; }
转载于:https://www.cnblogs.com/jerryRey/p/4637051.html
UVA 211 The Domino Effect 多米诺效应 (回溯)相关推荐
- UVa 211 The Domino Effect 多米诺效应 暴力搜索
题目链接:UVa 211 The Domino Effect 题目描述: 一张多米诺骨牌拥有两个数值,一共有二十八张不同的多米诺骨牌,这二十八张多米诺骨牌的点数如下图所示: 上图的 B o n e B ...
- POJ 1135 Domino Effect(最短路 多米诺骨牌)
题意 题目描述: 你知道多米诺骨牌除了用来玩多米诺骨牌游戏外,还有其他用途吗?多米诺骨牌游戏:取一 些多米诺骨牌,竖着排成连续的一行,两张骨牌之间只有很短的空隙.如果排列得很好,当你推 倒第 1张骨 ...
- POJ 1135 -- Domino Effect(单源最短路径)
POJ 1135 -- Domino Effect(单源最短路径) 题目描述: 你知道多米诺骨牌除了用来玩多米诺骨牌游戏外,还有其他用途吗?多米诺骨牌游戏:取一 些多米诺骨牌,竖着排成连续的一行, ...
- UVa 211 多米诺效应(The Domino Effect)
题目: 有一副多米诺骨牌,包含28张,每个多米诺骨牌正反面各有一个数字. 在7 * 8的网格中各张牌各摆一张,左边是个格子的典树,右边是格子所属的骨牌序号,要求输出所有可能的骨牌序号. 搜索与回溯,注 ...
- C - The Domino Effect(dfs+回溯)
作者:JF 题目描述 一组标准的双六多米诺骨牌包含28块骨牌(称为骨头),每个骨牌使用类似骰子的点子显示从0(空白)到6的两个数字.28块独特的骨骼由以下PIP组合组成: 一组中的所有双六个多米诺骨牌 ...
- 习题7-3 多米诺效应(The Domino Effect, ACM/ICPC World Finals 1991, UVa211)
谜一般的格式换行,为啥格式错报WA额. 这题也是用回溯法解决,只是判断情况稍微复杂些. 本质都是相同的,每次有两种决策,一行一行来处理. 当进行到某一行时,上一行还存在未vis的位置则回溯. #inc ...
- Poj 1135 Domino Effect(Dijkstra)
题目描述: 你知道多米诺骨牌除了用来玩多米诺骨牌游戏外,还有其他用途吗?多米诺骨牌游戏:取一 些多米诺骨牌,竖着排成连续的一行,两张骨牌之间只有很短的空隙.如果排列得很好,当你推 倒第1 张骨牌,会使 ...
- poj 1135 Domino Effect (Dijkstra)
1 题目大意 你知道多米诺骨牌除了用来玩多米诺骨牌游戏外,还有其他用途吗?多米诺骨牌游戏:取一些多米诺骨牌,竖着排成连续的一行,两张骨牌之间只有很短的空隙.如果排列得很好,当你推倒第1 张骨牌,会使其 ...
- 「POJ 1135」Domino Effect(dfs)
BUPT 2017 Summer Training (for 16) #3G 题意 摆好的多米诺牌中有n个关键牌,两个关键牌之间有边代表它们之间有一排多米诺牌.从1号关键牌开始推倒,问最后倒下的牌在哪 ...
最新文章
- 无人机送外卖已落地深圳,这体验有多爽?你根本想不到!
- C#多线程函数如何传参数和返回值
- 创建没有Document的MFC MDI应用程序
- Python BeautifulSoup库 API
- Python之实现常见算法
- 20200827:2020力扣第33周双周赛题解
- Python核心编程答案(自整理)
- 时序预测 | MATLAB实现DBN深度置信网络时间序列预测
- 读书笔记-人月神话8
- 已知闭合曲线上各点的坐标,如何求曲线上的凹点
- 绿盟 java 面试_绿盟科技校园招聘面试经验|面试问题(共52条)- 职业圈
- struct和typedef struct的用法和区别
- 树莓派搭建LAMP和FTP服务器
- 国产电子书的代表作是什么样的?
- 解析淘口令获取商品id,包含有效时间
- 联想笔记本声音太小怎么办_笔记本声音太小,详细教您笔记本电脑声音太小解决方法...
- proteus——555 PWM 发生器
- $http与ajax的同步请求
- 10 windows 启动虚拟机报错_VirtualBox5.0安装Windows10虚拟机启动失败
- 李沐 课程1.4-2.1
热门文章
- iOS-小Demo(Swift基础练习)--双TableView关联
- layout蛇形线建议
- python的loc函数_如何在pandas中使用loc、iloc函数进行数据索引(入门篇)
- 量化投之:连2年报率打败巴菲特
- 大学生家乡主题甘肃介绍网页代码 dreamweaver网页设计作业制作 WEB静态网页作业模板 dw个人网页作业成品
- 时间复杂度和空间复杂度(C站最详细的)
- 华为中国生态大会2021:因聚而生 有能有为
- 搭建velocity开发环境
- Fully Convolutional Networks for Semantic Segmentation(FCN)阅读理解
- DNF搬砖小妙招:如何搭建设备网络