Transformations 方块转换 USACO 模拟 数组 数学 耐心
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 模拟 数组 数学 耐心的更多相关文章
- USACO 1.2.2 Transformations 方块转换
Description 一块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度. ...
- 洛谷 P1205 [USACO1.2]方块转换 Transformations
P1205 [USACO1.2]方块转换 Transformations 题目描述 一块N x N(1<=N<=10)正方形的黑白瓦片的图案要被转换成新的正方形图案.写一个程序来找出将原始 ...
- [USACO1.2.2]方块转换 Transformations
P1205 [USACO1.2]方块转换 Transformations 标签 搜索/枚举 USACO 题目描述 一块N x N(1<=N<=10)正方形的黑白瓦片的图案要被转换成新的正方 ...
- 把int类型值转换成int数组(不通过string类型转换)
只适合初学者 今天同事问了我不通过string类型把int类型值123589转换成int[]数组.我想了想于是写了出来,其实不难.看你小学数学学得好不好.言归正传. 先不说代码,举个列子就知道怎么玩了 ...
- 如何将PHP对象数组转换成普通数组
/** * 对象数组转为普通数组 * * AJAX提交到后台的JSON字串经decode解码后为一个对象数组, * 为此必须转为普通数组后才能进行后续处理, * 此函数支持多维数组处理. * * @p ...
- 字符串集合或字符串数组转换成json数组
字符串可以是List<String>类型的字符串集合,也可以是String[]类型的字符串数组,二者转换成JSON数组的方式没有什么不同.下面代码注意关键的部分即可(画红线部分). 1. ...
随机推荐
- 【设计模式】结构型05组合模式(Composite Pattern)
组合模式(Composite Pattern) 意图:将对象组合成树形结构以表示"部分-整体"的层次结构.组合模式使得用户对单个对象和组合对象的使用具有一致性. 主要解决:它在我们 ...
- 机器学习之使用Python完成逻辑回归
一.任务基础 我们将建立一个逻辑回归模型来预测一个学生是否被大学录取.假设你是一个大学系的管理员,你想根据两次考试的结果来决定每个申请人的录取机会.你有以前的申请人的历史数据,你可以用它作为逻辑回归的 ...
- Python编程菜鸟成长记--A1--03--Python 环境安装(待完成)
1.重点知识 Windows 上如何安装 Python 3 Linux 上如何安装 Python 3 Mac 上如何安装 Python 3 Windows 上如何安装 Pycharm Mac 上如何安 ...
- HDU 3183:A Magic Lamp(RMQ)
http://acm.hdu.edu.cn/showproblem.php?pid=3183 题意:给出一个数,可以删除掉其中m个字符,要使得最后的数字最小,输出最后的数字(忽略前导零). 思路:设数 ...
- Dijkstra算法与堆(C++)
Dijkstra算法用于解决单源最短路径问题,通过逐个收录顶点来确保得到以收录顶点的路径长度为最短. 图片来自陈越姥姥的数据结构课程:https://mooc.study.163.com/l ...
- 关于 https的SNI问题
遇到的问题,服务器多站点配置HTTPS 后遇到的问题,服务器报警告错误. 随后网上搜索了下 SNI的意义. 这句话很经典: SNI(Server Name Indication)是为了解决一个服务器使 ...
- 寻觅Azure上的Athena和BigQuery (二):神奇的PolyBase
前情回顾 在“数据湖”概念与理论逐渐深入人心的今天,面向云存储的交互式查询这个需求场景显得愈发重要.这是因为原生的云存储(主要指S3这样的对象存储)既能够容纳大容量的明细数据,又能在性能和成本间取得一 ...
- Autocad2017破解版下载|Autodesk Autocad 2017中文破解版下载 64位(附注册机/序列号)
Autocad2017是Autodesk公司开发的自动计算机辅助设计软件,可用于二维绘图.详细绘制.设计文档和基本三维设计,它具有良好的用户界面,允许用户通过交互菜单或命令行方式来进行各种操作,包括图 ...
- NetCore AutoMapper的封装
需要引用AutoMapper的Nuget包 如果需要忽略某个字段就在字段上面打标签如下: [IgnoreMap] public string IgnoreValue { get; set; } ...
- 利用jenkins实现自动构建、部署,提升团队开发效率
一大早就被群里的同学刷银川下雪的消息,看着我都发冷,突觉一阵凉风裹身,是不是该考虑秋裤了. 偏离主题,正文走起...... 使用jenkins目标:利用其结合maven完成自动构建,并部署到tomca ...