hust NENU Summer Training 2014 #2 D - Polyomino Decomposer
来源:互联网 发布:freebsd下载软件 编辑:程序博客网 时间:2024/06/06 19:34
这是一道比较水的题,只要理解了题意就行了。
题意:给你一个原有的图1,‘*’表示1,'.'表示空,再给你一个图2,现在让你用2个图2来填充图1,不能旋转和覆盖。如果可以就输出1,不行就输出0;
思路:将图2的点距离第一个“*”的x和y的距离算出来,保存在数组num_x和num_y中。然后循环两次,最后判断是否还有就行了。
代码:
#include<iostream>
#include<cmath>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<cstdlib>
using namespace std;
char str1[16][16];
char str2[16][16];
int num1[16][16];
int num_x[110];
int num_y[110];
int n,m;
int k=0;
int check() {
for(int i=0; i<n; i++) {
for(int j=0; j<n; j++) {
if(num1[i][j]==1) {
return 0;
}
}
}
return 1;
}
int solve() {
for(int s=0; s<2; s++) {
for(int i=0; i<n; i++) {
for(int j=0; j<n; j++) {
if(num1[i][j]==1) {
for(int t=0; t<k; t++) {
if(num1[i+num_x[t]][j+num_y[t]]==1) {
num1[i+num_x[t]][j+num_y[t]]=0;
} else {
return 0;
}
}
}
}
}
}
return check();
}
int main() {
while(cin>>n>>m) {
if(n==0&&m==0) {
break;
}
for(int i=0; i<n; i++) {
cin>>str1[i];
}
memset(num1,0,sizeof(num1));
for(int i=0; i<n; i++) {
for(int j=0; j<n; j++) {
if(str1[i][j]=='*') {
num1[i][j]=1;
}
}
}
for(int i=0; i<m; i++) {
cin>>str2[i];
}
int flagi=0;
int flagj=0;
int flag=0;
for(int i=0; i<m; i++) {
for(int j=0; j<m; j++) {
if(str2[i][j]=='*') {
flagi=i;
flagj=j;
flag=1;
break;
}
}
if(flag) {
break;
}
}
num_x[0]=0;
num_y[0]=0;
k=1;
for(int i=flagi; i<m; i++) {
for(int j=0; j<m; j++) {
if(i==flagi&&j==flagj) {
continue;
}
if(str2[i][j]=='*') {
num_x[k]=i-flagi;
num_y[k++]=j-flagj;
}
}
}
int s=solve();
if(s) {
printf("1\n");
} else {
printf("0\n");
}
}
return 0;
}
- hust NENU Summer Training 2014 #2 D - Polyomino Decomposer
- hust NENU Summer Training 2014 #1 G - The Famous ICPC Team Again
- ecjtu-summer training #2 D
- ecjtu-summer training #5 D
- UESTC Summer Team Training #2
- Tri_integral Summer Training 2 总结
- ecjtu-summer training #2 A
- POJ3781-3786(Unknown Summer Training ID 8911 0x03 on hust oj)(枚举、贪心、动态规划)
- NBUT 2012 Summer Training - 1 / [D] Dress, Left Dress!
- D - Minimum palindrome----(2015 summer training #9)
- D - Cut the Cake----(2015 summer training #11)
- ecjtu-summer training #3 D Gym 100952A 签到题
- Summer Training day6 codeforces 593D LCA+并查集
- Summer Training day6 codeforces 675D 二叉搜索树
- UPC 2017 Summer Training 6 A,D,I
- UESTC 2017 Summer Training #2 Div.2
- UESTC 2017 Summer Training #1 Div.2
- Tri_integral Summer Training 6
- Object-C 的特点
- 杭电 1150 moving tables
- hdu 1010 Tempter of the Bone
- cocos2d-x 使用box2d来做碰撞检测(且仅用来做碰撞检测)
- HTTP Keep-Alive模式
- hust NENU Summer Training 2014 #2 D - Polyomino Decomposer
- 树莓派的FTP配置
- 广度优先搜索
- 如何将PDF转换成PPT演示文稿
- HDUJ 2031 进制转换
- 指针数组和数组指针
- Java抽象类与接口的区别
- 中科燕园GIS外包案例之七---基于ArcGIS Server的输电线路三维全景系统
- PDF转换器for mac