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度:图案按顺时针 ...
随机推荐
- 双硬盘双系统win10+manjaro-kde搭建
电脑sdd+hdd双硬盘,默认win10装在了sdd分区,uefi+gpt引导.现在想要在hdd中划分出一个分区安装manjaro,并在开机多重引导. 1. 制作安装盘 先去下载最新的镜像,最好在国内 ...
- 偏前端 - ios下position:fixed失效的问题解决
如图,考虑到用户体验的问题,一般页面的下方提交按钮都会随着固定在页面上,方便用户点击. 有些人肯定就说了,这还不简单,position:fixed: 但是在ios这个坑货系统上这个position:f ...
- Business Unit Helper
using System; using System.Linq; using Microsoft.Xrm.Sdk; using Microsoft.Crm.Sdk.Messages; using Sy ...
- 手动封装一个属于自己的AJAX类库
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- python列表学习
#创建列表,通过[]来创建列表my_list=[] #创建了一个空列表#print(my_list,type(my_list)) #列表追存储的数据,我们称为元素#一个列表中可以存储多个元素,也可以在 ...
- google网站推广被拒登如何解决
前几天,有一客户向我们SINE安全公司反映,网站在google上的推广已拒登,说什么网站存在恶意软件或垃圾软件,导致google广告无法上线,还发现网站从google搜索点击进去会直接跳转到其他网站上 ...
- 【深度优先搜索】NOIP2017_D2T1 洛谷3958奶酪
这道题的写法大体有两种:大法师DFS和并查集,两种算法都不难,本篇博客主要讲解DFS,而且测试数据特水,连个剪枝都不用都可以过. 题目描述[luogu传送门] 现有一块大奶酪,它的高度为 h,它的长度 ...
- 理解 ajax、fetch和axios
背景 ajax fetch.axios 优缺点 ajax基于jquery,引入时需要引入庞大的jquery库,不符合当下前端框架,于是fetch替代了ajax 由于fetch是比较底层,需要我们再次封 ...
- 原生js三级联动
<!DOCTYPE html> <html lang="en"> <head> <title> 三级联动 </title> ...
- 20155305乔磊2016-2017-2《Java程序设计》第四周学习总结
20155305乔磊2016-2017-2<Java程序设计>第四周学习总结 教材学习内容总结 继承 继承就是避免多个类间重复定义共同行为. 面向对象中,子类继承父类,就是把程序中相同的代 ...