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. c语言转义字符如下

    #define MQTT_EVENT_REPORT_BOX_STATUS_FORMAT "{"\                                           ...

  2. Redis学习小结

    在7月中旬,我成功入职实习,通过进入公司,认识到了个人与企业巨大的差距,首先就是对于中间件的使用,ElasticSearch.Redis.Kafka等等,都是听过却从未使用过的,然而在任务下达之后,激 ...

  3. spring定时任务执行两次

    最近用Spring的quartz定时器的时候,发现到时间后,任务总是重复执行两次,在tomcat或jboss下都如此. 打印出他们的hashcode,发现是不一样的,也就是说,在web容器启动的时候, ...

  4. java网站架构设计

    涉及到的技术及工具:java,springmvc,ibatis,freemarker,mysql,mongdb,memcached,ehcache,maven. 一个网站不可能说一开始就是要设计一个能 ...

  5. Can we access global variable if there is a local variable with same name?

    In C, we cannot access a global variable if we have a local variable with same name, but it is possi ...

  6. Javaj基础知识runtime error

    遇到的java 运行时错误: NullPointerException空指针  ,简单地说就是调用了未经初始化的对象或者是不存在的对象,这个错误经常出现在创建图片,调用数组这些操作中,比如图片未经初始 ...

  7. Spring.DM版HelloWorld

    本文主要描述使用Spring.DM2.0,创建OSGi的HelloWorld演示程序,理解Spring.DM的OSGi框架实现机制.   环境描述: 项目 版本 Eclipse 3.7.x JDK 1 ...

  8. Java虚拟机(JVM)以及跨平台原理

    相信大家已经了解到Java具有跨平台的特性,可以"一次编译,到处运行",在Windows下编写的程序,无需任何修改就可以在Linux下运行,这是C和C++很难做到的. 那么,跨平台 ...

  9. MFC入门示例之组合框(CComboBox)、列表框(CListBox)

    1 //添加按钮点击事件 2 void CMFCApplication4Dlg::OnBnClickedButton1() 3 { 4 CString strText; 5 //获取文本框的值 6 G ...

  10. 通过spring-data-redis操作Redis

    一.操作String类型数据 @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration("classpath:spring/ ...