USACO 1.2.2 Transformations 方块转换
Description
一块N x N(1<=N<=10)正方形的黑白瓦片的图案要被转换成新的正方形图案。写一个程序来找出将原始图案按照以下列转换方法转换成新图案的最小方式: 1:转90度:图案按顺时针转90度。 2:转180度:图案按顺时针转180度。 3:转270度:图案按顺时针转270度。 4:反射:图案在水平方向翻转(以中央铅垂线为中心形成原图案的镜像)。 5:组合:图案在水平方向翻转,然后再按照1到3之间的一种再次转换。 6:不改变:原图案不改变。 7:无效转换:无法用以上方法得到新图案。 如果有多种可用的转换方法,请选择序号最小的那个。
Input
第一行: 单独的一个整数N。 第二行到第N+1行: N行每行N个字符(不是“@”就是“-”);这是转换前的正方形。 第N+2行到第2*N+1行: N行每行N个字符(不是“@”就是“-”);这是转换后的正方形。
Output
单独的一行包括1到7之间的一个数字(在上文已描述)表明需要将转换前的正方形变为转换后的正方形的转换方法。
Sample Input
3
@-@
---
@@-
@-@
@--
--@
Sample Output
1 题目意思:问原先的正方形图案通过那一种转换变成了目标正方形图案。
解题思路:一共有七种变换,但究其本质实际上只有旋转,反射,不变,和其他这四种方案,那么把这四种方案写成被调函数。我们只需要不断枚举这七种变换,和目标正方形图案坐标比对即可。
#include<cstdio>
#include<stdio.h>
#include<cstring>
#include<algorithm>
int n;
int vis[];
char a[][],b[][],c[][],t[][];
void turn_90()
{
int i,j;
for(i=; i<n; i++)
{
for(j=; j<n; j++)
{
b[j][n-i-]=c[i][j];
}
}
for(i=; i<n; i++)
{
strcpy(c[i],b[i]);
}
}
void fanshe()
{
int i,j;
for(i=; i<n; i++)
{
for(j=; j<n; j++)
{
b[i][n-j-]=a[i][j];
}
}
for(i=; i<n; i++)
{
strcpy(c[i],b[i]);
}
}
void no_ex()
{
int i,j;
for(i=; i<n; i++)
{
for(j=; j<n; j++)
{
b[i][j]=a[i][j];
}
}
}
int judge(int k)
{
int i,j;
int flag=;
for(i=; i<n; i++)
{
for(j=; j<n; j++)
{
if(t[i][j]!=b[i][j])///不成立
{
flag=;
}
}
}
return flag;
}
int main()
{
int i,j,k;
scanf("%d",&n);
for(i=; i<n; i++)
{
for(j=; j<n; j++)
{
scanf(" %c",&a[i][j]);
c[i][j]=a[i][j];
}
}
for(i=; i<n; i++)
{
for(j=; j<n; j++)
{
scanf(" %c",&t[i][j]);
}
}
for(k=; k<=; k++)///旋转
{
turn_90();///在旋转90基础上再旋转90就是180,再旋转90就是270
if(judge(k))
{
printf("%d\n",k);
return ;
}
}
fanshe();
if(judge())
{
printf("4\n");
return ;
}
for(k=; k<=; k++)
{
turn_90();
if(judge())
{
printf("5\n");
return ;
}
}
no_ex();
if(judge())
{
printf("6\n");
return ;
}
else
{
printf("7\n");
}
return ;
}
USACO 1.2.2 Transformations 方块转换的更多相关文章
- Transformations 方块转换 USACO 模拟 数组 数学 耐心
1006: 1.2.2 Transformations 方块转换 时间限制: 1 Sec 内存限制: 128 MB提交: 10 解决: 7[提交] [状态] [讨论版] [命题人:外部导入] 题目 ...
- 【USACO 1.2.2】方块转换
[问题描述] 一块N x N(1<=N<=10)正方形的黑白瓦片的图案要被转换成新的正方形图案.写一个程序来找出将原始图案按照以下列转换方法转换成新图案的最小方式: 1:转90度:图案按顺 ...
- Transformations 方块转换
题目是中文题,就不做什么解释了,纯模拟题,主要要搞清楚这几种装换方式下标的变化: 第一种:顺时针旋转90度: c[j][n-i+1]=a[i][j]; 第二种:旋转180度: c[n-i+1][n-j ...
- 洛谷 Transformations 方块转换
Description 一块N x N(1<=N<=10)正方形的黑白瓦片的图案要被转换成新的正方形图案.写一个程序来找出将原始图案按照以下列转换方法转换成新图案的最小方式: 1:转90度 ...
- 【USACO1.2_2】★Transformations 方块转换
一块N x N(1<=N<=10)正方形的黑白瓦片的图案要被转换成新的正方形图案.写一个程序来找出将原始图案依照下面列转换方法转换成新图案的最小方式: 1:转90度:图案按顺时针转90度. ...
- [USACO1.2.2]方块转换 Transformations
P1205 [USACO1.2]方块转换 Transformations 标签 搜索/枚举 USACO 题目描述 一块N x N(1<=N<=10)正方形的黑白瓦片的图案要被转换成新的正方 ...
- 洛谷 P1205 [USACO1.2]方块转换 Transformations
P1205 [USACO1.2]方块转换 Transformations 题目描述 一块N x N(1<=N<=10)正方形的黑白瓦片的图案要被转换成新的正方形图案.写一个程序来找出将原始 ...
- Spark Streaming之六:Transformations 普通的转换操作
与RDD类似,DStream也提供了自己的一系列操作方法,这些操作可以分成四类: Transformations 普通的转换操作 Window Operations 窗口转换操作 Join Opera ...
- USACO Training Section 1.2 [USACO1.2]方块转换 Transformations
题目描述 一块N x N(1<=N<=10)正方形的黑白瓦片的图案要被转换成新的正方形图案.写一个程序来找出将原始图案按照以下列转换方法转换成新图案的最小方式: 1:转90度:图案按顺时针 ...
随机推荐
- 浅谈ES6基础——Promise
IMAGE加载 Callback Hell function loadImg(src,callback,fail) { var img = document.createElement('img'); ...
- MYSQL 5.7.25最后一个5.x版本记录
一:下载 位 https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.25-win32.zip 位 https://dev.mysql.co ...
- pycharm使用杂记
R语言解释器在/opt/local/Library/Frameworks/R.framework/Versions/3.5/Resources/bin/R
- python面试题之基础2
2.3 考虑以下 Python 代码,如果运行结束,命令行中的运行结果是什么? 两者用法相同,不同的是 range 返回的结果是一个列表,而 xrange 的结果是一个生成器,前者是 直接开辟一块内存 ...
- PHP实现多继承 trait 语法
原文地址:http://small.aiweimeng.top/index.php/archives/50.html PHP没有多继承的特性.即使是一门支持多继承的编程语言,我们也很少会使用这个特性. ...
- VB错误说明
1001 800A03E9 内存不足 1002 800A03EA 语法错误 1003 800A03EB 缺少“:” 1005 800A03ED 需要 '(' 1006 800A03EE 需要 ')' ...
- 大数据调错系列之hadoop在开发工具控制台上打印不出日志的解决方法
(1)在windows环境上配置HADOOP_HOME环境变量 (2)在eclipse上运行程序 (3)注意:如果eclipse打印不出日志,在控制台上只显示 1.log4j:WARN No appe ...
- 大数据Hadoop的HA高可用架构集群部署
1 概述 在Hadoop 2.0.0之前,一个Hadoop集群只有一个NameNode,那么NameNode就会存在单点故障的问题,幸运的是Hadoop 2.0.0之后解决了这个问题,即支持N ...
- 清华大学《C++语言程序设计基础》线上课程笔记03---数据的共享和保护&数组
数据的共享和保护 对象的生存期 static类型的局部变量,生存期在整个程序,局部可见. void example() { static a=1; int b=2 } 当调用完example函数后,b ...
- 获取http-post请求的原生报文
BufferedReader br = new BufferedReader(new InputStreamReader(request.getInputStream(), "utf-8&q ...