1006: 1.2.2 Transformations 方块转换

时间限制: 1 Sec  内存限制: 128 MB
提交: 10  解决: 7
[提交] [状态] [讨论版] [命题人:外部导入]

题目描述

1.2.2 Transformations 方块转换

(transform.pas/c/cpp)

一块N x N(1<=N<=10)正方形的黑白瓦片的图案要被转换成新的正方形图案。写一个程序来找出将原始图案按照以下列转换方法转换成新图案的最小方式:

1:转90度:图案按顺时针转90度。

2:转180度:图案按顺时针转180度。

3:转270度:图案按顺时针转270度。

4:反射:图案在水平方向翻转(以中央铅垂线为中心形成原图案的镜像)。

5:组合:图案在水平方向翻转,然后再按照1到3之间的一种再次转换。

6:不改变:原图案不改变。

7:无效转换:无法用以上方法得到新图案。

如果有多种可用的转换方法,请选择序号最小的那个。

只使用1--7中的一个步骤来完成这次转换。

格式

PROGRAM NAME: transform

INPUT FORMAT:

file (transform.in)

第一行: 单独的一个整数N。

第二行到第N+1行: N行每行N个字符(不是“@”就是“-”);这是转换前的正方形。

第N+2行到第2*N+1行: N行每行N个字符(不是“@”就是“-”);这是转换后的正方形。

OUTPUT FORMAT:

file (transform.out)

单独的一行包括1到7之间的一个数字(在上文已描述)表明需要将转换前的正方形变为转换后的正方形的转换方法。

SAMPLE INPUT

3
@-@
---
@@-
@-@
@--
--@

SAMPLE OUTPUT

1

提示

来源/分类

天哪 就是一个超级大模拟

只是在自己思考的时候有些困难

算了 我们还是挨个条件分析一下吧

好吧 还是敲出来了 挺考验耐力的

也挺同情这一堆函数来回传bool值~O(∩_∩)O哈哈~

不说了粘代码吧

 #include<bits/stdc++.h>
using namespace std;
char a[][],Endmatrix[][],b[][],bb[][];
bool check(int n){
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
if(b[i][j]!=Endmatrix[i][j])
return false;
return true;
}
void init(int n){
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
cin>>a[i][j];
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
cin>>Endmatrix[i][j];
}
void Type_1(int n){
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
b[j][n-i+]=a[i][j];
}
void Type_2(int n){
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
b[n-i+][n-j+]=a[i][j];
}
void Type_3(int n){
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
b[n-j+][i]=a[i][j];
}
void Type_4(int n){
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
b[i][n-j+]=a[i][j];
}
bool Type_5(int n){
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
bb[i][n-j+]=a[i][j];
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
b[j][n-i+]=bb[i][j];
if(check(n)) return true;
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
b[n-i+][n-j+]=bb[i][j];
if(check(n)) return true;
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
b[n-j+][i]=bb[i][j];
return check(n);
}
bool Control(int Type,int n){
if(Type==) return true;
if(Type==) {Type_1(n);return check(n);}
if(Type==) {Type_2(n);return check(n);}
if(Type==) {Type_3(n);return check(n);}
if(Type==) {Type_4(n);return check(n);}
if(Type==) return Type_5(n);
if(Type==) return check(n);
}
int main(){
int n; scanf("%d",&n);
init(n);
for(int i=;i<=;i++)
if(Control(i,n)){
printf("%d",i);
break;
}
return ;
}

加油吧~

Transformations 方块转换 USACO 模拟 数组 数学 耐心的更多相关文章

  1. USACO 1.2.2 Transformations 方块转换

    Description 一块N x N(1<=N<=10)正方形的黑白瓦片的图案要被转换成新的正方形图案.写一个程序来找出将原始图案按照以下列转换方法转换成新图案的最小方式: 1:转90度 ...

  2. Transformations 方块转换

    题目是中文题,就不做什么解释了,纯模拟题,主要要搞清楚这几种装换方式下标的变化: 第一种:顺时针旋转90度: c[j][n-i+1]=a[i][j]; 第二种:旋转180度: c[n-i+1][n-j ...

  3. 洛谷 Transformations 方块转换

    Description 一块N x N(1<=N<=10)正方形的黑白瓦片的图案要被转换成新的正方形图案.写一个程序来找出将原始图案按照以下列转换方法转换成新图案的最小方式: 1:转90度 ...

  4. 【USACO1.2_2】★Transformations 方块转换

    一块N x N(1<=N<=10)正方形的黑白瓦片的图案要被转换成新的正方形图案.写一个程序来找出将原始图案依照下面列转换方法转换成新图案的最小方式: 1:转90度:图案按顺时针转90度. ...

  5. 洛谷 P1205 [USACO1.2]方块转换 Transformations

    P1205 [USACO1.2]方块转换 Transformations 题目描述 一块N x N(1<=N<=10)正方形的黑白瓦片的图案要被转换成新的正方形图案.写一个程序来找出将原始 ...

  6. [USACO1.2.2]方块转换 Transformations

    P1205 [USACO1.2]方块转换 Transformations 标签 搜索/枚举 USACO 题目描述 一块N x N(1<=N<=10)正方形的黑白瓦片的图案要被转换成新的正方 ...

  7. 把int类型值转换成int数组(不通过string类型转换)

    只适合初学者 今天同事问了我不通过string类型把int类型值123589转换成int[]数组.我想了想于是写了出来,其实不难.看你小学数学学得好不好.言归正传. 先不说代码,举个列子就知道怎么玩了 ...

  8. 如何将PHP对象数组转换成普通数组

    /** * 对象数组转为普通数组 * * AJAX提交到后台的JSON字串经decode解码后为一个对象数组, * 为此必须转为普通数组后才能进行后续处理, * 此函数支持多维数组处理. * * @p ...

  9. 字符串集合或字符串数组转换成json数组

    字符串可以是List<String>类型的字符串集合,也可以是String[]类型的字符串数组,二者转换成JSON数组的方式没有什么不同.下面代码注意关键的部分即可(画红线部分). 1. ...

随机推荐

  1. JavaWeb入门_模仿天猫整站Tmall_SSH实践项目

    Tmall_SSH 技术栈 Struts2 + Hibernate + Spring + Jsp + Tomcat , 是 Java Web 入门非常好的练手项目 效果展示: 模仿天猫前台 模仿天猫后 ...

  2. 【设计模式】结构型04桥接模式(Bridge Pattern)

    学习地址:http://www.runoob.com/design-pattern/bridge-pattern.html 桥接模式(Bridge Pattern) 桥接模式(Bridge patte ...

  3. CPP常用库函数以及STL

    其他操作 memset void * memset ( void * ptr, int value, size_t num ); memset(ptr,0xff,sizeof(ptr)); 使用mem ...

  4. MapReduce in MongoDB

    MongoDB の MapReduce 在Hadoop的学习中已经接触过MapReduce了,它是一个很成熟的计算模型,将大批量的工作(也就是数据)分解(MAP映射)执行,最后将结果合并成最终的Red ...

  5. decimal.ToString()问题

    decimal dt = 1.00M;            decimal dt1 = 1M;                         bool d = dt == dt1;         ...

  6. SpringMVC框架的简单理解

    首先,让我们来看下下图 SpringMVC解决了View和Controller的交互问题 其中有几个重要组成部分: (1) DispatcherServlet: 前端控制器 用于接收所有请求,并负责分 ...

  7. Java程序运行原理分析

    class文件内容 class文件包含Java程序执行的字节码 数据严格按照格式紧凑排列在class文件的二进制流,中间无分割符 文件开头有一个0xcafebabe(16进制)特殊的标志 JVM运行时 ...

  8. 【POJ - 1995】Raising Modulo Numbers(快速幂)

    -->Raising Modulo Numbers Descriptions: 题目一大堆,真没什么用,大致题意 Z M H A1  B1 A2  B2 A3  B3 ......... AH  ...

  9. 【基本数据结构之堆】-C++

    注意:这篇博客讲的是手写堆,喜欢用C++自带数据结构模拟的慎入 今天我们来聊一聊一种奇怪 的数据结构: 堆 为什么说这个数据结构有点奇怪呢? 先看看其他的在我眼里是正常的数据结构: 队列(近似于排队) ...

  10. Excel催化剂开源第34波-SM.MS图床API调用(用POST上传multipart/form-data内容)

    日常做网抓数据,都是以GET请求为主,偶尔遇到需要POST请求的,一般POST的参数只是一串字符串就可以了,通过构造字符串也很容易完成,但此次SM.MS的API接口要求是Content-Type: m ...