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. ...
随机推荐
- 小白也能看懂的 Laravel 核心概念讲解
自动依赖注入 什么是依赖注入,用大白话将通过类型提示的方式向函数传递参数. 实例 1 首先,定义一个类: /routes/web.php class Bar {} 假如我们在其他地方要使用到 Bar ...
- Hadoop起步之图解SSH、免密登录原理和实现
1. 前言 emmm….最近学习大数据,需要搭建Hadoop框架,当弄好linux系统之后,第一件事就是SSH免密登录的设置.对于SSH,我觉得使用过linux系统的程序员应该并不陌生.可是吧,用起来 ...
- 【Spring源码解析】—— 策略模式在Spring中的应用
一. 什么是策略模式 策略模式的定义/含义:策略本身就是为了实现某一个目标而采取的一种工作方式,因此只要能够达成目标,则采取哪一种策略都可以:因此多种实际的策略之间是相互平行的. 注意 ...
- 一篇文章让你理解Ceph的三种存储接口(块设备、文件系统、对象存储)
“Ceph是一个开源的.统一的.分布式的存储系统”,这是我们宣传Ceph时常说的一句话,其中“统一”是说Ceph可以一套存储系统同时提供块设备存储.文件系统存储和对象存储三种存储功能.一听这句话,具有 ...
- MYSQL事务之Yii2.0商户提现
我是一个半路出家的PHP程序员,到目前为止,不算在培训班学习的时间,已经写代码整整两年了.可能由于工作业务的原因,在这两年中我没有用到过MySQL事务.就在昨天有个关于支付宝转账的业务不得不使用MyS ...
- Git 安装教程(2.21.0)
获取安装包地址 1.官网(较慢):https://git-scm.com/downloads 2.下载链接:http://down-ww3.newasp.net/pcdown/soft/soft1/g ...
- Html自动播放音乐代码
<audio id="bgmMusic" src="demo.mp3" autoplay="autoplay" loop=" ...
- Vue技术点整理-安装引入
Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架 所谓渐进式是指: 1,如果你有一个现成的web应用,你可以将vue作为该应用的一部分嵌入其中,带来更丰富的交互体验 ...
- VueRouter认识
1. 什么是路由? 路由(vue-router)是负责将进入的浏览器请求映射到特定的 组件 代码中.即决定了由谁(组件)去响应客户端请求.简单说路由就是url地址和对应的资源的映射,通过一个路径的ur ...
- Redis图形化客户端管理软件推荐
Redis是一个超精简的基于内存的键值对NOSQL数据库(key-value),一般对并发有一定要求的应用都用其储存session,乃至整个数据库.不过它公自带一个最小化的命令行式的数据库管理工具re ...