Polyomino Composer(UVA12291)
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)的更多相关文章
- Laravel Composer and ServiceProvider
Composer and: 创建自定义类库时,按命名空间把文件夹结构组织好 composer.json>autoload>classmap>psr-4 composer dump-a ...
- 基于Composer Player 模型加载和相关属性设置
主要是基于达索软件Composer Player.的基础上做些二次开发. public class ComposerToolBarSetting { public bool AntiAliasingO ...
- Composer概述及其自动加载探秘
composer概述 一开始,最吸引我的当属 Composer 了,因为之前从没用过 Composer . Composer 是PHP中用来管理依赖关系的工具,你只需在自己的项目中声明所依赖的外部工具 ...
- composer 出现 configuration does not allow connection to http.......
出现这样的问题是,镜像使用的是http,而原地址是需要https,所以配置下关掉https就好了. 我们来个全局设置的方法: composer config -g secure-http false ...
- 在linux上如何通过composer安装yii
Composer可以理解成一个依赖管理工具 它能解决以下问题 a) 你有一个项目依赖于若干个库. b) 其中一些库依赖于其他库. c) 你声明你所依赖的东西. d) Composer 会找出哪个版 ...
- composer
composer 是PHP框架的包安装工具,类似于bower ,npm.bundler. 是命令行工具,没有图形界面. 系统要求 运行 Composer 需要 PHP + 以上版本.一些敏感的 PHP ...
- 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 ...
- composer 使用笔记
使用composer 更新项目比如: composer create-project topthink/think wwwroot dev-master --prefer-dist提示openssl异 ...
- mac composer 安装
在命令行执行 curl -sS https://getcomposer.org/installer | php 如果没安装 curl 执行以下代码 php -r "readfile('htt ...
随机推荐
- cvc-complex-type.2.3: Element 'servlet' cannot have character [children], because the type's content
错误原因:粘贴代码 <servlet> <servlet-name>barServlet</servlet-name> <servlet-class>S ...
- [源码解析] PyTorch分布式优化器(1)----基石篇
[源码解析] PyTorch分布式优化器(1)----基石篇 目录 [源码解析] PyTorch分布式优化器(1)----基石篇 0x00 摘要 0x01 从问题出发 1.1 示例 1.2 问题点 0 ...
- 日常Java 2021/10/5
java 异常处理 Throwable中包括Error 和Exception,Exception包括IOException和RuntimeException 抛出异常 1.异常运算条件 Arithme ...
- day02 web主流框架
day02 web主流框架 今日内容概要 手写简易版本web框架 借助于wsgiref模块 动静态网页 jinja2模板语法 前端.web框架.数据库三种结合 Python主流web框架 django ...
- Spark基础:(七)Spark Streaming入门
介绍 1.是spark core的扩展,针对实时数据流处理,具有可扩展.高吞吐量.容错. 数据可以是来自于kafka,flume,tcpsocket,使用高级函数(map reduce filter ...
- oracle中分组中的ROLLUP和CUBE选项
在进行多列分组统计时,如果直接使用GROUP BY子句指定分组列,则只能生成基于所有分组列的统计结果.如果在GROUP BY子句中使用ROLLUP语句或CUBE语句,除了生成基于所有指定列的分组统计外 ...
- SpringIOC原理
IOC(DI):其实这个Spring架构核心的概念没有这么复杂,更不像有些书上描述的那样晦涩.java程序员都知道:java程序中的每个业务逻辑至少需要两个或以上的对象来协作完成,通常,每个对象在使用 ...
- 【编程思想】【设计模式】【结构模式Structural】适配器模式adapter
Python版 https://github.com/faif/python-patterns/blob/master/structural/adapter.py #!/usr/bin/env pyt ...
- 过滤敏感词工具类SensitiveFilter
网上过滤敏感词工具类有的存在挺多bug,这是我自己改用的过滤敏感词工具类,目前来说没啥bug,如果有bug欢迎在评论指出 使用前缀树 Trie 实现的过滤敏感词,树节点用静态内部类表示了,都写在一个 ...
- numpy基础教程--where函数的使用
在numpy中,where函数是一个三元运算符,函数原型为where(condition, x, y),意思是当条件成立的时候,将矩阵的值设置为x,否则设置为y 一个很简单的应用就是,在一个矩阵当中, ...