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. Python解释器安装教程以及环境变量配置

    Python3.6安装 打开官网:http://www.python.org,下载python3.6.如下图: 下载完成后进行安装.如下图: 验证环境是否配置成功 打开cmd,输入python,按回车 ...

  2. 搭建本地pip源

    搭建本地的pip源 开发环境部署机器的时候, 每次从网上下载pip包会很慢, 将需要的包和相关依赖下载到本地, 搭建一个本地源服务器. 基本都是安装多个包, 推荐使用文件的方式, 文件内容格式, 可以 ...

  3. C#使用 SSL Socket 建立 Client 与 Server 连接

    当 Client 与 Server 需要建立一个沟通的管道时可以使用 Socket 的方式建立一个信道,但是使用单纯的 Socket 联机信道可能会担心传输数据的过程中可能被截取修改因而不够安全,为了 ...

  4. Programming In Lua 第五章

    1, 2, 3, 4, 5, 6, 7, 8, 9, 第9点非常重点. 10,

  5. JAVA 从一个List里删除包含另一个List的数据

    /** * 从listA里删除listB里有的数据 * @param listA * @param listB * @return */ public static List<String> ...

  6. 解决Spring的java项目打包后执行出现“无法读取方案文档...“、“原因为 1) 无法找到文档; 2) 无法读取文档; 3) 文档的根元素不是...”问题

    问题 一个用Spring建的java项目,在Eclipse或idea中运行正常,为什么打包后运行出现如下错误呢? 2019/07/10/19:04:07 WARN [main] org.springf ...

  7. ECharts 地图绘制与钻取简易接口

    1.地图绘制过程原理 给定范围边界经纬度数据,再给它个名字就构成了绘制地图的基础.也就是说,你可以绘制任意形状的地图版块. 2.地图数据生成 中国以及省市县等地图的基础数据可以从这里生成与下载. ht ...

  8. flask请求上下文 (转)

    本篇阅读目录 一.flask中的CBV 二.werkzeug + 上下文初步解读 三.偏函数和线程安全 回到顶部 一.flask中的CBV 对比django中的CBV,我们来看一下flask中的CBV ...

  9. 《Predict Anchor Links across Social Networks via an Embedding Approach》阅读笔记

    基本信息 文献:Predict Anchor Links across Social Networks via an Embedding Approach 时间:2016 期刊:IJCAI 引言 预测 ...

  10. MyBatis从入门到精通:select用法进一步讲解

    selectAll:笔记 /* 定义接口方法的返回值的时候,必须注意查询SQL可能返回的结果数量.当 返回值最多只有一个结果的时候,可以将结果返回值定义为SysUser,此时 返回值类型为List&l ...