URAL 1970 J - 皇后像廣場 dfs
J - 皇后像廣場
题目连接:
http://acm.hust.edu.cn/vjudge/contest/123332#problem/J
Description
Vova was walking along the Statue Square (皇后像廣場) in Hong Kong, when he noticed that the square was paved with multi-colored square tiles. Vova took a careful look at the tiles and realized that they formed some picture. The tiles were large and he couldn't look at all of them at once. Probably one should look at the tile picture from above.
Vova decided to take a photo of a (10 × 10)-tile part of a picture, but he still couldn't cover them with one shot. Then Vova took nine photos, each of them covered a (4 × 4)-tile area of the picture (see the picture below). If we arrange the nine photos correctly, then we can restore the original 10 × 10 picture.
Problem illustration
Unfortunately, soon after printing out the photos Vova forgot not only the arranging order of them, but the correct rotation as well. He can rotate the image on the photo by an arbitrary angle multiple of 90 degrees. Help Vova use the nine photos to restore the original 10 × 10 pattern.
Input
The input contains the nine photos Vova made. The photos are described by 4 × 4 size matrices containing integers from 0 to 99, representing the colors of the corresponding tiles. The numbers on a line are separated by spaces. Each matrix is separated from the next one by an empty line.
Output
Print the original pattern as a 10 × 10 matrix. The matrix elements in the line should be separated by spaces. If there are multiple solutions, you may print any of them. It is guaranteed that at least one solution exists.
Sample Input
1 1 9 9
1 9 1 1
9 1 1 1
9 1 1 9
9 1 1 9
9 1 1 1
9 1 1 1
9 1 1 9
9 1 1 9
9 1 1 1
1 9 1 1
1 1 9 9
9 1 1 9
1 1 1 1
1 1 1 1
9 1 1 9
9 1 1 9
1 1 1 9
1 1 9 1
9 9 1 1
9 1 1 9
1 1 1 9
1 1 1 9
9 1 1 9
9 9 1 1
1 1 9 1
1 1 1 9
9 1 1 9
9 9 9 9
1 1 1 1
1 1 1 1
9 1 1 9
9 1 1 9
1 9 9 1
1 1 1 1
9 9 9 9
Sample Output
1 1 9 9 9 9 9 9 1 1
1 9 1 1 1 1 1 1 9 1
9 1 1 1 1 1 1 1 1 9
9 1 1 9 1 1 9 1 1 9
9 1 1 1 1 1 1 1 1 9
9 1 1 1 1 1 1 1 1 9
9 1 1 9 1 1 9 1 1 9
9 1 1 1 9 9 1 1 1 9
1 9 1 1 1 1 1 1 9 1
1 1 9 9 9 9 9 9 1 1
Hint
题意
给你9个44的矩阵,然后问你能不能用这9个矩阵拼成一个1010的大矩阵的图案。
可以旋转。
题解:
预处理旋转之后的样子,然后直接dfs就好了
不需要剪枝,我猜状态不会很多。。
代码
#include<bits/stdc++.h>
using namespace std;
struct node
{
int a[4][4];
}p[9][4];
int flag = 0;
int ans[10][10];
int vis[10];
int xx[9]={0,0,0,3,3,3,6,6,6};
int yy[9]={0,3,6,0,3,6,0,3,6};
void dfs(int x){
if(flag)return;
if(x==9){
for(int i=0;i<10;i++){
for(int j=0;j<10;j++){
if(j==0)printf("%d",ans[i][j]);
else printf(" %d",ans[i][j]);
}
printf("\n");
}
flag = 1;
return;
}
for(int i=0;i<9;i++){
if(vis[i])continue;
for(int j=0;j<4;j++){
int fff = 0;
for(int t=0;t<4;t++){
for(int k=0;k<4;k++){
if(ans[xx[x]+t][yy[x]+k]==-1)continue;
if(ans[xx[x]+t][yy[x]+k]!=p[i][j].a[t][k]){
fff = 1;
break;
}
}
if(fff)break;
}
if(fff==0){
for(int t=0;t<4;t++){
for(int k=0;k<4;k++){
ans[xx[x]+t][yy[x]+k]=p[i][j].a[t][k];
}
}
vis[i]=1;
dfs(x+1);
if(flag)return;
vis[i]=0;
for(int t=0;t<4;t++){
if(x/3!=0&&t==0)continue;
for(int k=0;k<4;k++){
if(x%3!=0&&k==0)continue;
ans[xx[x]+t][yy[x]+k]=-1;
}
}
}
}
}
}
int main(){
//freopen("1.in","r",stdin);
memset(ans,-1,sizeof(ans));
for(int i=0;i<9;i++){
for(int j=0;j<4;j++)
for(int k=0;k<4;k++)
scanf("%d",&p[i][0].a[j][k]);
for(int j=0;j<4;j++)
for(int k=0;k<4;k++)
p[i][1].a[j][k]=p[i][0].a[k][4-j-1];
for(int j=0;j<4;j++)
for(int k=0;k<4;k++)
p[i][2].a[j][k]=p[i][1].a[k][4-j-1];
for(int j=0;j<4;j++)
for(int k=0;k<4;k++)
p[i][3].a[j][k]=p[i][2].a[k][4-j-1];
}
dfs(0);
}
URAL 1970 J - 皇后像廣場 dfs的更多相关文章
- 蓝桥杯之 2n皇后问题(双层dfs,暴力)
Description 给定一个n*n的棋盘,棋盘中有一些位置不能放皇后.现在要向棋盘中放入n个黑皇后 和n个白皇后,使任意的两个黑皇后都不在同一行.同一列或同一条对角线上,任意的两 个白皇后都不在同 ...
- HDU 2553 N皇后问题(深搜DFS)
N皇后问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- 八皇后问题解题报告(dfs
这里是代码传送门 所谓八皇后问题,一开始接触,上学期舍友提及的,但是因为各种原因,水平不够,并没有关心,偶然之间,再次遇见,便进行的尝试(棋盘是0-7的,不是1-8的...开始打弄错了) 所谓八皇后问 ...
- N皇后问题hdu2553(dfs)
N皇后问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Subm ...
- 2018 Multi-University Training Contest 4 Problem J. Let Sudoku Rotate 【DFS+剪枝+矩阵旋转】
任意门:http://acm.hdu.edu.cn/showproblem.php?pid=6341 Problem J. Let Sudoku Rotate Time Limit: 2000/100 ...
- HDU-6341 Problem J. Let Sudoku Rotate(dfs 剪枝)
题目:有一个4*4*4*4的数独,每一横每一竖每一个小方块中都无重复的字母,即都为0-9,A-F..有一个已经填好的数独,若干个4*4的方块被逆时针拧转了若干次,问拧转回来至少需要多少次. 分析:很明 ...
- URAL 1890 . Money out of Thin Air (dfs序hash + 线段树)
题目链接: URAL 1890 . Money out of Thin Air 题目描述: 给出一个公司里面上司和下级的附属关系,还有每一个人的工资,然后有两种询问: 1:employee x y z ...
- hdu6341 Problem J. Let Sudoku Rotate (dfs)
题目传送门 题意: 给你16个16宫格的数独,里面是0~F,你可以逆时针旋转里面的每个16宫格 问你它是从标准数独逆时针旋转多少次得到? 思路: 可以知道每个16宫已经是标准的了,接下来只要考虑每行. ...
- 洛谷 1219:八皇后 (位运算 & DFS)
题目链接: https://www.luogu.org/problem/show?pid=1219#sub row:受上面的皇后通过列控制的位置 ld:受上面的皇后通过从右至左的斜对角线控制的位置 r ...
随机推荐
- [软件]在浏览器里添加MarkDown Here(插件)
1. 先来说说这个插件的作用是什么: 用于在网页一些编辑文本的地方, 使用MacDown编辑文本 支持大部分浏览器, https://github.com/adam-p/markdown-here ...
- HTML5页面开发的基础性模板
分享一个HTML5页面开发的基础性模板,包含了两个版本: 开发版本 注释版本 开发版本 <!DOCTYPE html> <html> <head> <meta ...
- ASP.net学习总结
学习ASP.net又一次接触了B/S开发.下面先通过一张图对ASP.net有一个宏观结构的总结.之后将详细介绍ASP.net中的六大对象. 1.Request从客户端得到数据,包括基于表单的数据和通过 ...
- 8个提高效率的CSS实用工具
CSS,也就是Cascading Style Sheets,推出于1997年,差不多是17年前,至此为我们开发网页大开方便之门,协助我们制作出一个又一个惊艳绝伦的网站设计和模板,提升了我们的创造能力, ...
- mysql数据库的快捷键
mysql数据库快捷键 ctrl+q 打开查询窗口 ctrl+/ 注释sql语句 ctrl+shift +/ 解除注释 ctrl+r 运行查询窗口的sql语句 ctrl+shift+r 只运行选中的s ...
- 在maven 2工程中加入iTextAsian支持(maven添加自定义jar包到本地仓库)
最近需要在工程中加入JasperReports,其中要用到把报表导出为pdf文件的功能.JasperReports内部使用iText来输出pdf文档,而iText对中文是放在单独的包iTextAsia ...
- CodeForces Contest #1110: Global Round 1
比赛传送门:CF #1110. 比赛记录:点我. 涨了挺多分,希望下次还能涨. [A]Parity 题意简述: 问 \(k\) 位 \(b\) 进制数 \(\overline{a_1a_2\cdots ...
- WPF 中定时器的使用
DispatcherTimer timer; private void Window_Loaded(object sender, RoutedEventArgs e) { timer = new Di ...
- HTTPS-HTTPS原理
楔子 谣言粉碎机前些日子发布的<用公共WiFi上网会危害银行账户安全吗?>,文中介绍了在使用HTTPS进行网络加密传输的一些情况,从回复来看,争议还是有的.随着网络越来越普及,应用越来越广 ...
- Fiddler实现移动端手机抓包
Fiddler是一个http调试代理,它能 够记录所有的你电脑和互联网之间的http通讯,Fiddler 可以也可以让你检查所有的http通讯,设置断点,以及Fiddle 所有的“进出”的数据(指co ...