Description

  Polyomino Composer 

A polyomino is a plane geometric figure formed by joining one or more equal squares edge to edge.

- Wikipedia

Given a large polyomino and a small polyomino, your task is to determine whether you can compose the large one with two copies of the small one. The polyominoes can be translated, but not flipped or rotated. The two pieces should not overlap. The leftmost picture below is a correct way of composing the large polyomino, but the right two pictures are not. In the middle picture, one of the pieces was rotated. In the rightmost picture, both pieces are exactly identical, but they're both rotated from the original piece (shown in the lower-right part of the picture).

Input

There will be at most 20 test cases. Each test case begins with two integers n and m ( 1mn10) in a single line. The next n lines describe the large polyomino. Each of these lines contains exactly n characters in `*',`.'. A `*' indicates an existing square, and a `.' indicates an empty square. The next m lines describe the small polyomino, in the same format. These characters are guaranteed to form valid polyominoes (note that a polyomino contains at least one existing square). The input terminates with n = m = 0, which should not be processed.

Output

For each case, print `1' if the corresponding composing is possible, print `0' otherwise.

Sample Input

4 3
.**.
****
.**.
....
**.
.**
...
3 3
***
*.*
***
*..
*..
**.
4 2
****
....
....
....
*.
*.
0 0

Sample Output

1
0
0

思路:暴力枚举下即可;

  1 #include<stdio.h>
2 #include<algorithm>
3 #include<iostream>
4 #include<queue>
5 #include<math.h>
6 #include<stdlib.h>
7 #include<string.h>
8 char ans[20][20];
9 char bns[20][20];
10 char ask[20][20];
11 char ck[20][20];
12 bool flag=0;
13 bool tie(int n,int m,int xx,int yy,int mxx,int myy)//先贴第一个
14 {
15 int i,j;
16 for(i=n; i<=xx; i++)
17 {
18 for(j=m; j<=yy; j++)
19 {
20 int p=i-n;
21 int q=j-m;
22 ck[i][j]=bns[mxx+p][myy+q];
23 }
24 }
25 }
26 bool check(int n,int m,int xx,int yy,int mxx,int myy,int t)//贴第二个并判断与要求的图形是否相同
27 { int i,j;
28 for(i=n; i<=xx; i++)
29 {
30 for(j=n; j<=yy; j++)
31 {
32 int p=i-n;
33 int q=j-m;
34 if(ask[i][j]=='.'&&bns[mxx+p][myy+q]=='*')
35 {
36 ask[i][j]='*';
37 }
38 else if(ask[i][j]=='*'&&bns[mxx+p][myy+q]=='*')
39 {
40 return false;
41 }
42 }
43 }
44 for(i=0;i<t;i++)
45 {
46 for(j=0;j<t;j++)
47 {
48 if(ask[i][j]!=ans[i][j])
49 return false;
50 }
51 }
52 return true;
53 }
54
55 int main(void)
56 {
57 int i,j,k;
58 int n,m;
59 while(scanf("%d %d",&n,&m),n!=0&&m!=0)
60 {
61 flag=0;
62 memset(ask,0,sizeof(ask));
63 for(i=0; i<n; i++)
64 {
65 scanf("%s",ans[i]);
66 }
67 for(i=0; i<m; i++)
68 {
69 scanf("%s",bns[i]);
70 }
71 int x,y;
72 int x1=0;
73 int x2=m;
74 int y1=0;
75 int y2=m;
76 for(i=0; i<m; i++)
77 {
78 for(j=0; j<m; j++)
79 {
80 if(bns[i][j]=='*')
81 {
82 if(i>x1)
83 x1=i;
84 if(j>y1)
85 y1=j;
86 if(i<x2)
87 x2=i;
88 if(j<y2)
89 y2=j;
90 }
91 }
92 }
93 int xx2=x1-x2;
94 int yy2=y1-y2;
95 for(i=0; i<n; i++)
96 {
97 for(j=0; j<n; j++)
98 {
99 for(int s=0; s<n; s++)
100 {
101 for(int uu=0; uu<n; uu++)
102 {
103 ck[s][uu]='.';
104 }
105 }
106 if(i+xx2>n-1||j+yy2>n-1)
107 continue;
108 else
109 {
110 tie(i,j,i+xx2,j+yy2,x2,y2);
111 for(x=0; x<n; x++)
112 {
113 for(y=0; y<n; y++)
114 {
115 for(int s=0; s<n; s++)
116 {
117 for(int uu=0; uu<n; uu++)
118 {
119 ask[s][uu]=ck[s][uu];
120 }
121 }
122 if(x+xx2>n-1||y+yy2>n-1)
123 continue;
124 else
125 {
126 flag=check(x,y,x+xx2,y+yy2,x2,y2,n);
127 if(flag)
128 {
129 break;
130 }
131 }
132 }if(flag)break;
133 }
134 }
135 if(flag)break;
136 }
137 if(flag)break;
138 }
139 if(flag)printf("1\n");
140 else printf("0\n");
141 }
142 return 0;
143 }

Polyomino Composer(UVA12291)的更多相关文章

  1. Laravel Composer and ServiceProvider

    Composer and: 创建自定义类库时,按命名空间把文件夹结构组织好 composer.json>autoload>classmap>psr-4 composer dump-a ...

  2. 基于Composer Player 模型加载和相关属性设置

    主要是基于达索软件Composer Player.的基础上做些二次开发. public class ComposerToolBarSetting { public bool AntiAliasingO ...

  3. Composer概述及其自动加载探秘

    composer概述 一开始,最吸引我的当属 Composer 了,因为之前从没用过 Composer . Composer 是PHP中用来管理依赖关系的工具,你只需在自己的项目中声明所依赖的外部工具 ...

  4. composer 出现 configuration does not allow connection to http.......

    出现这样的问题是,镜像使用的是http,而原地址是需要https,所以配置下关掉https就好了. 我们来个全局设置的方法: composer config -g secure-http false ...

  5. 在linux上如何通过composer安装yii

      Composer可以理解成一个依赖管理工具 它能解决以下问题 a) 你有一个项目依赖于若干个库. b) 其中一些库依赖于其他库. c) 你声明你所依赖的东西. d) Composer 会找出哪个版 ...

  6. composer

    composer 是PHP框架的包安装工具,类似于bower ,npm.bundler. 是命令行工具,没有图形界面. 系统要求 运行 Composer 需要 PHP + 以上版本.一些敏感的 PHP ...

  7. composer 报错:Your requirements could not be resolved to an installable set of packages 解决方法

    composer 报错: - Your requirements could not be resolved to an installable set of packages xxxxxxxxxxx ...

  8. composer 使用笔记

    使用composer 更新项目比如: composer create-project topthink/think wwwroot dev-master --prefer-dist提示openssl异 ...

  9. mac composer 安装

    在命令行执行 curl -sS https://getcomposer.org/installer | php 如果没安装 curl 执行以下代码 php -r "readfile('htt ...

随机推荐

  1. php操作mongodb手册地址

    php操作mongodb手册地址: http://php.net/manual/zh/class.mongocollection.php

  2. JavaBean内省与BeanInfo

    Java的BeanInfo在工作中并不怎么用到,我也是在学习spring源码的时候,发现SpringBoot启动时候会设置一个属叫"spring.beaninfo.ignore", ...

  3. A Child's History of England.23

    King William, fearing he might lose his conquest, came back, and tried to pacify the London people b ...

  4. 13. 搭建arm-linux-gcc交叉编译环境

    1.下载工具并解压 下载路径  http://www.arm9.net/download.asp 将 arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz 拷贝到 Linux ...

  5. Redis6 新特性

    Redis6新特性 ACL安全策略 ACL(access control list): 访问控制列表,可以设置多个用户,并且给每个用户单独设置命令权限和数据权限 default用户和使用require ...

  6. 数据库时间和 java 时间不一致解决方案

    java添加 date 到数据库,时间不一致 使用 date 添加到数据库,数据库显示的时候和date时间相差 8 个小时,这是由于 mysql 上的时区的问题,这里有两个解决方案: 方案一: 设置数 ...

  7. 『学了就忘』Linux启动引导与修复 — 70、grub启动引导程序的配置文件说明

    目录 1.grub中分区的表示方法 2.grub的配置文件 3.grub的配置文件内容说明 (1)grub的整体设置 (2)CentOS系统的启动设置 1.grub中分区的表示方法 在说grub启动引 ...

  8. Oracle异常处理——ORA-01502:索引或这类索引的分区处于不可用状态

    Oracle异常处理--ORA-01502:索引或这类索引的分区处于不可用状态参考自:https://www.cnblogs.com/lijiaman/p/9277149.html 1.原因分析经过查 ...

  9. JConsole可视化工具

    JConsole基本介绍 Jconsole (Java Monitoring and Management Console),一种基于JMX的可视化监视.管理工具.JConsole 基本包括以下基本功 ...

  10. Vue重要知识

    Event Bus 总线 Vue中的EventBus是一种发布订阅模式的实践,适用于跨组件简单通信. Vuex也可以用来组件中进行通信,更适用于多组件高频率通信. 使用方式: 1.把Bus注入到Vue ...