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的更多相关文章

  1. 蓝桥杯之 2n皇后问题(双层dfs,暴力)

    Description 给定一个n*n的棋盘,棋盘中有一些位置不能放皇后.现在要向棋盘中放入n个黑皇后 和n个白皇后,使任意的两个黑皇后都不在同一行.同一列或同一条对角线上,任意的两 个白皇后都不在同 ...

  2. HDU 2553 N皇后问题(深搜DFS)

    N皇后问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  3. 八皇后问题解题报告(dfs

    这里是代码传送门 所谓八皇后问题,一开始接触,上学期舍友提及的,但是因为各种原因,水平不够,并没有关心,偶然之间,再次遇见,便进行的尝试(棋盘是0-7的,不是1-8的...开始打弄错了) 所谓八皇后问 ...

  4. N皇后问题hdu2553(dfs)

    N皇后问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Subm ...

  5. 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 ...

  6. HDU-6341 Problem J. Let Sudoku Rotate(dfs 剪枝)

    题目:有一个4*4*4*4的数独,每一横每一竖每一个小方块中都无重复的字母,即都为0-9,A-F..有一个已经填好的数独,若干个4*4的方块被逆时针拧转了若干次,问拧转回来至少需要多少次. 分析:很明 ...

  7. URAL 1890 . Money out of Thin Air (dfs序hash + 线段树)

    题目链接: URAL 1890 . Money out of Thin Air 题目描述: 给出一个公司里面上司和下级的附属关系,还有每一个人的工资,然后有两种询问: 1:employee x y z ...

  8. hdu6341 Problem J. Let Sudoku Rotate (dfs)

    题目传送门 题意: 给你16个16宫格的数独,里面是0~F,你可以逆时针旋转里面的每个16宫格 问你它是从标准数独逆时针旋转多少次得到? 思路: 可以知道每个16宫已经是标准的了,接下来只要考虑每行. ...

  9. 洛谷 1219:八皇后 (位运算 & DFS)

    题目链接: https://www.luogu.org/problem/show?pid=1219#sub row:受上面的皇后通过列控制的位置 ld:受上面的皇后通过从右至左的斜对角线控制的位置 r ...

随机推荐

  1. 学了display:flex垂直居中容易多了

    以前div内部的文字垂直居中,使用height = line-height,现在可以使用display:flex来实现了 .div{ display:flex; align-items:center; ...

  2. nodejs图片总结

    今天终于把朴灵老师写的<深入浅出Node.js>给学习完了, 这本书不是一本简单的Node入门书籍,它没有停留在Node介绍或者框架.库的使用层面上,而是从不同的视角来揭示Node自己内在 ...

  3. Linux - ssh 连接问题

    SSH 连接方式 ssh -p 22 user@192.168.1.209 # 从linux ssh登录另一台linux ssh -p 22 root@192.168.1.209 CMD # 利用ss ...

  4. NOI2001 方程的解数(双向搜索)

    solution 一道非常经典的双向搜索题目,先将前3个未知数枚举一遍得到方程的前半部分所有可能的值,取负存入第一个队列中再将后3个未知数枚举一遍,存入第二个队列中.这样我们只要匹配两个队列中相同的元 ...

  5. mysql.user细节三问

    一.如何拒绝用户从某个精确ip访问数据库假如在mysql.user表中存在用户'mydba'@'192.168.85.%',现在想拒绝此用户从某个精确ip访问数据库 # 创建精确ip用户,分配不同的密 ...

  6. rap 部署

    Rap 安装 war包下载地址 https://github.com/thx/RAP/releases 创建数据库,并创建权限用户 mysql> create database rap_db c ...

  7. MySQL之EXPLAIN 执行计划详解

    explain 可以分析 select 语句的执行,即 MySQL 的“执行计划. 一.type 列 MySQL 在表里找到所需行的方式.包括(由左至右,由最差到最好): | All | index ...

  8. 2012 Dhaka

    2012 Dhaka B - Wedding of Sultan 题目描述:给出一棵树的\(dfs\)序(只要经过就会记录),求每个点的度 solution 按\(dfs\)序的规则还原这棵树就好了. ...

  9. OS X 10.11:如何完全停用Time Machine。

    家里的2010年21.5英寸iMac越来越慢,用HFS+分区的1.5TB外置硬盘进行备份时,100G数据经常两三个小时还不能备份完.Time Machine虽然方便,但效率太低,不得不停用. 1. 要 ...

  10. docker 要点学习

    本文主要记录学习和使用docker时遇到的一些问题和踩过的坑 1.本地docker新建redis容器,映射6379端口到本地,本机的java项目再去连,会一直连不上,原因是redis容器中映射端口时需 ...