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. Java面试题系列(二)Java内存模型

    在进行Java编程时,我们通常需要通过new创建一个对象的实例.就比如有一个People的类,那么创建一个People的实例:People w_people = new People(); 此时,ne ...

  2. 20155328 2016-2017-2 《Java程序设计》第六周 学习总结

    20155328 2016-2017-2 <Java程序设计>第6周学习总结 教材学习内容总结 根据不同的分类标准,IO可分为:输入/输出流:字节/字符流:节点/处理流. 在不使用Inpu ...

  3. tclsh 用法

    set foo "a bc" # 定义变量 set b {$a}; # 转义 b的值为" $a " ,而不是变量结果 ; incr a ; # 数字的自增. 将 ...

  4. 终极利器!利用appium和mitmproxy登录获取cookies

    环境搭建 参考我之前写的https://www.cnblogs.com/c-x-a/p/9163221.html appium 代码start_appium.py # -*- coding: utf- ...

  5. C#排队处理DEMO

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  6. apiCloud app调用浏览器打开网页的方法

    在APP调用浏览器有两种方法:1.使用openApp2.使用openWin 两种方法调用浏览器后的效果有一点不同:1.使用openApp调用浏览器后,如果手机内有多个浏览器,会首先弹出选择浏览器的框2 ...

  7. Visual Studio 2013/2015/2017快捷键(转)

    英文原文:19 Must-Know Visual Studio Keyboard Shortcuts 项目相关的快捷键 Ctrl + Shift + B = 生成项目 Ctrl + Alt + L = ...

  8. IIS7配置HTTPS+默认访问https路径

    一.下载证书(这里我使用的是阿里云免费的证书) 文件说明: 1. 1532858285913.key(证书私钥文件).1532858285913.pem(证书文件).1532858285913.pfx ...

  9. linux后端诊断与调试技术

    本文不是liunx命令使用教程,也不打算全方面阐明其用法,互联网公司项目很多,服务程序之间相互依赖调用很复杂,各种因素会影响线程服务正常运行,特别是基础服务组件更是如此,当出现各种问题时,如何诊断li ...

  10. LeetCode(24): 两两交换链表中的节点

    Medium! 题目描述: 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表. 示例: 给定 1->2->3->4, 你应该返回 2->1->4->3. 说 ...