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 ( 1
m
n
10) 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 ...
随机推荐
- C/C++ Qt StandardItemModel 数据模型应用
QStandardItemModel 是标准的以项数据为单位的基于M/V模型的一种标准数据管理方式,Model/View 是Qt中的一种数据编排结构,其中Model代表模型,View代表视图,视图是显 ...
- Android系统编程入门系列之硬件交互——多媒体麦克风
在多媒体摄像头及相关硬件文章中,对摄像头的使用方式需要区分应用程序的目标版本以使用不同的代码流程,而与之相比,麦克风硬件的使用就简单多了. 麦克风及相关硬件 麦克风硬件在移动设备上作为音频的采集设备, ...
- LeetCode 从头到尾打印链表
LeetCode 从头到尾打印链表 题目描述 输入一个链表头节点,从尾到头反过来返回每个节点的值(用数组返回). 示例 1: 输入:head = [1,3,2] 输出:[2,3,1] 一得之见(Jav ...
- 【2021赣网杯web(一)】gwb-web-easypop
源码分析 <?php error_reporting(0); highlight_file(__FILE__); $pwd=getcwd(); class func { public $mod1 ...
- Linux的小知识
1. top 命令可以在Linux下查看任务管理器和当前进程使用资源情况. 2. Ctrl+c 即可退出,然后使用 kill+进程号 命令可杀死指定进程 3.在Linux的 /etc/rc.local ...
- 优化if else嵌套代码
写在前面 不知大家有没遇到过像"横放着的金字塔"一样的if else嵌套: if (true) { if (true) { if (true) { if (true) { if ( ...
- archive后upload to app store时遇到app id不可用的问题
问题如下图 出现此问题的原因有两种: 1.此app id在AppStore中已经存在,也就是说你使用别人注册的app ID , 如果是这样,你只能更换app ID 2.此app ID是自己的,突然之 ...
- 【Linux】【Services】【SaaS】Docker+kubernetes(11. 构建复杂的高可用网络)
1. 简介 flannel在实战阶段貌似不能胜任在灾难恢复时候异地的网络,打算用openvswith试试
- Java 在Word中嵌入多媒体(视频、音频)文件
Word中可将Office(Word/Excel/PowerPoint).PDF.txt等文件作为OLE对象插入到文档中,双击该对象可直接访问或编辑该文件,除了以上常见的文件格式对象,也可以插入多媒体 ...
- Notepad++ 常用功能:批量取消替换换行、强制刷新数据
批量取消替换换行 换行批量替换成空格 Ctrl+F 打开查找替换窗口,使用:\r\n 替换成 空格,全部替换 强制刷新数据源,重新加载数据 快捷键:Ctrl+R 或者 Alt+F 然后 L 或者点击菜 ...