习题 7-3 uva211
题意:给你28个多米勒牌,要求刚好铺满一个7x8的图,输出所有答
案。每个牌只能使用一次
思路:
对每个位置分别搜索其右边 和 下边。
但是在中途,细节上有点问题。最开始想的是搜到最后一个点输出答案,但总是有问题。然后搜索部分换了个姿势,记录以使用的牌数,终于AC。感觉 - -自己好坑
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <queue>
#include <algorithm>
typedef long long ll;
using namespace std;
const int inf = 0x3f3f3f3f;
int all; int vis[10][10];
int ans[10][10];
int p[10][10];
int pip[10][10];
int vis_pip[30][30];
int dir[2][2] = {{0,1},{1,0}}; void ini()
{
int tt = 1;
for(int i = 0; i < 7; i++)
for(int j = i; j < 7; j++)
{
pip[i][j] = pip[j][i] = tt++;
}
return;
} void dfs(int cur,int num)
{ int x = cur/8;
int y = cur%8;
if(num == 28) //搜满28个
{
for(int i = 0; i < 7; i++)
{
for(int j = 0; j < 8; j++)
{
printf("%4d",ans[i][j]);
}
printf("\n");
}
all ++;
printf("\n");
return ;
}
if(vis[x][y])
{
dfs(cur+1,num);
return ;
}
if(x > 6 || y > 7)
return ;
for(int i = 0;i < 2;i++)
{
if(i == 0 && y == 7) continue;
if(i == 1 && x == 6) continue;
int tx = x + dir[i][0];
int ty = y + dir[i][1];
if(vis[tx][ty] || vis_pip[p[x][y]][p[tx][ty]])
continue;
vis[x][y] = vis[tx][ty]= vis_pip[p[x][y]][p[tx][ty]] = vis_pip[p[tx][ty]][p[x][y]] = 1;
ans[x][y] = ans[tx][ty] = pip[p[x][y]][p[tx][ty]];
dfs(cur+1,num+1);
vis[x][y] = vis[tx][ty]= vis_pip[p[x][y]][p[tx][ty]] = vis_pip[p[tx][ty]][p[x][y]] = 0;
}
return ;
} int main()
{
int cas = 1;
ini();
// freopen("in.txt","r",stdin);
while(scanf("%d%d%d%d%d%d%d%d",&p[0][0],&p[0][1],&p[0][2],&p[0][3],&p[0][4],&p[0][5],&p[0][6],&p[0][7]) != EOF)
{
for(int i = 1; i < 7; i++)
for(int j = 0; j < 8; j++)
{
scanf("%d",&p[i][j]);
}
if(cas!= 1)
printf("\n\n\n");
memset(vis,0,sizeof(vis));
memset(vis_pip,0,sizeof(vis_pip));
printf("Layout #%d:\n\n",cas);
for(int i = 0; i < 7; i++)
{
for(int j = 0; j <8; j++)
{
printf("%4d",p[i][j]);
}
printf("\n");
}
printf("\n");
printf("Maps resulting from layout #%d are:\n\n",cas);
all = 0; dfs(0,0);
printf("There are %d solution(s) for layout #%d.\n",all,cas++);
}
return 0;
}
习题 7-3 uva211的更多相关文章
- Sharepoint学习笔记—习题系列--70-576习题解析 --索引目录
Sharepoint学习笔记—习题系列--70-576习题解析 为便于查阅,这里整理并列出了70-576习题解析系列的所有问题,有些内容可能会在以后更新. 需要事先申明的是: 1. ...
- 《python核心编》程课后习题——第三章
核心编程课后习题——第三章 3-1 由于Python是动态的,解释性的语言,对象的类型和内存都是运行时确定的,所以无需再使用之前对变量名和变量类型进行申明 3-2原因同上,Python的类型检查是在运 ...
- 习题 5: 更多的变量和打印 | 笨办法学 Python
一. 简述 “格式化字符串(format string)” - 每一次你使用 ' ’ 或 " " 把一些文本引用起来,你就建立了一个字符串. 字符串是程序将信息展示给人的方式. ...
- 【WebGoat习题解析】Parameter Tampering->Bypass HTML Field Restrictions
The form below uses HTML form field restrictions. In order to pass this lesson, submit the form with ...
- python核心编程(第二版)习题
重新再看一遍python核心编程,把后面的习题都做一下.
- SQL简单语句总结习题
创建一个表记员工个人信息: --创建一个表 create table plspl_company_info( empno ) not null, ename ) not null, job ), ma ...
- 《Python核心编程》部分代码习题实践(持续更新)
第三章 3-10 交换异常处理方式 代码: #makeTextFile.py #!/usr/bin/env python 'makeTextFile.py' import os ls = os.lin ...
- web实验指导书和课后习题参考答案
实验指导书 :http://course.baidu.com/view/daf55bd026fff705cc170add.html 课后习题参考答案:http://wenku.baidu.com/li ...
- 《C++primer》v5 第1章 开始 读书笔记 习题答案
从今天开始在博客里写C++primer的文字.主要以后面的习题作业为主,会有必要的知识点补充. 本人也是菜鸟,可能有不对之处,还望指出. 前期内容可能会比较水. 1.1略 1.2略 1.3 cin和c ...
随机推荐
- bzoj千题计划271:bzoj4869: [六省联考2017]相逢是问候
http://www.lydsy.com/JudgeOnline/problem.php?id=4869 欧拉降幂+线段树,每个数最多降log次,模数就会降为1 #include<cmath&g ...
- python之路--day11---迭代器和生成器
迭代: 迭代是一个重复的过程,每次重复即一次迭代,并且每次迭代的结果都是下一次迭代的初始值 为什么要有迭代器: 数据类型的取值,字符串,列表,元组依靠索引可以取值,但是字典,集合,文件这些数据类型无法 ...
- MMA8451重力加速度计通过写内部校准寄存器进行校准
|版权声明:本文为博主原创文章,未经博主允许不得转载. AN4069应用笔记中提到MMA8451的三个轴重力校准有两种方法, 第一种方法是简易校准,将贴有MMA8451的设备整体,Z轴正面朝上放在校准 ...
- MSIL实用指南-一维数组的操作
本篇讲解怎么生成和操作一维数组.各种数组类型创建的步骤是一样的,但是加载和保存步骤有所不同. 一.创建数组所有类型的一维数组创建都是一样的,分三步.1.加载数组长度2.生成指令 Newarr < ...
- ribbon 详解
ribbon 详解 1. 顶层架构 2. 简单的示例:使用ResourceTemplate方式 @Test public void testGroup(){ HttpResourceGroup htt ...
- uva 10917 Walk Through The Forest
题意: 一个人从公司回家,他可以从A走到B如果从存在从B出发到家的一条路径的长度小于任何一条从A出发到家的路径的长度. 问这样的路径有多少条. 思路: 题意并不好理解,存在从B出发到家的一条路径的长度 ...
- Struts(二十四):短路验证&重写实现转换验证失败时短路&非字段验证
短路验证: 若对一个字段使用多个验证器,默认情况下会执行所有的验证.若希望前面的验证器没有通过,后面的验证器就不再执行,可以使用短路验证. 1.如下拦截器,如果输入字符串,提交表单后,默认是会出现三个 ...
- Struts(十三):通用标签
Struts标签简介: Struts2标签库提供了主题.模板支持,极大地简化了视图页面的编写,而且,struts2的主题.模板都提供了很好的扩展性,实现了更好的代码复用.Struts2允许在页面中使用 ...
- hasattr(obj,attr) 判断前面是否有后面的属性
hasattr(obj,attr) 判断前面是否有后面的属性
- 解决:My97DatePicker 日期插件引用在PHP文件中maxDate和minDate控制失效问题
开发环境: 语言:PHP 框架:ThinkPHP 问题:在引用插件My97DatePicker时,想实现:开始日期不能大于结束日期,结束时间不能小于开始时间 步骤一.查看文档官方文档http://ww ...