Transformations 方块转换
题目是中文题,就不做什么解释了,纯模拟题,主要要搞清楚这几种装换方式下标的变化:
第一种:顺时针旋转90度:
c[j][n-i+1]=a[i][j];
第二种:旋转180度:
c[n-i+1][n-j+1]=a[i][j];
第三种:顺时针旋转270度:
c[i][j]=a[j][n-i+1];
第四种:反射
c[i][n-j+1]=a[i][j];
第五种:组合
先反射:c[i][n-j+1]=a[i][j];
然后再按照1到3之间的一种再次转换。
第六种:不改变
c[i][j]=a[i][j];
第七种:其他
如果有多种可用的转换方法,请选择序号最小的那个。
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <iostream>
using namespace std;
int n;
int type;
char a[][],b[][],c[][];
void input()
{
cin>>n;
int i,j;
getchar();
for(i=; i<=n; i++)
{
for(j=; j<=n; j++)
cin>>a[i][j];
}
for(i=; i<=n; i++)
{
for(j=; j<=n; j++)
cin>>b[i][j];
}
}
void judge()
{
int k;
int flag=;
int i,j;
for(k=; k<=; k++)
{
if(k==)//转90度
{
flag=;
for(i=; i<=n; i++)
{
for(j=; j<=n; j++)
c[j][n-i+]=a[i][j];
}
for(i=; i<=n; i++)
{
for(j=; j<=n; j++)
{
if(c[i][j]!=b[i][j])
{
flag=;
break;
}
}
if(flag)
break;
}
if(i==n+)
{
type=k;
return;
}
}
if(k==)//转180度
{
flag=;
for(i=; i<=n; i++)
{
for(j=; j<=n; j++)
c[n-i+][n-j+]=a[i][j];
}
for(i=; i<=n; i++)
{
for(j=; j<=n; j++)
{
if(c[i][j]!=b[i][j])
{
flag=;
break;
}
}
if(flag)
break;
}
if(i==n+)
{
type=k;
return;
}
}
if(k==)//转270度
{
flag=;
for(i=; i<=n; i++)
{
for(j=; j<=n; j++)
c[i][j]=a[j][n-i+];
}
for(i=; i<=n; i++)
{
for(j=; j<=n; j++)
{
if(c[i][j]!=b[i][j])
{
flag=;
break;
}
}
if(flag)
break;
}
if(i==n+)
{
type=k;
return;
}
}
if(k==)//反射
{
flag=;
for(i=; i<=n; i++)
{
for(j=; j<=n; j++)
c[i][n-j+]=a[i][j];
}
for(i=; i<=n; i++)
{
for(j=; j<=n; j++)
{
if(c[i][j]!=b[i][j])
{
flag=;
break;
}
}
if(flag)
break;
}
if(i==n+)
{
type=k;
return;
}
}
if(k==)//组合
{
flag=;
for(i=; i<=n; i++)
{
for(j=; j<=n; j++)
c[i][n-j+]=a[i][j];
}
for(i=; i<=n; i++)
{
for(j=; j<=n; j++)
a[j][n-i+]=c[i][j];
}
for(i=; i<=n; i++)
{
for(j=; j<=n; j++)
{
if(a[i][j]!=b[i][j])
{
flag=;
break;
}
}
if(flag)
break;
}
if(i==n+)
{
type=k;
return;
}
flag=;
for(i=; i<=n; i++)
{
for(j=; j<=n; j++)
a[n-i+][n-j+]=c[i][j];
}
for(i=; i<=n; i++)
{
for(j=; j<=n; j++)
{
if(a[i][j]!=b[i][j])
{
flag=;
break;
}
}
if(flag)
break;
}
if(i==n+)
{
type=k;
return;
}
flag=;
for(i=; i<=n; i++)
{
for(j=; j<=n; j++)
a[i][j]=c[j][n-i+];
}
for(i=; i<=n; i++)
{
for(j=; j<=n; j++)
{
if(a[i][j]!=b[i][j])
{
flag=;
break;
}
}
if(flag)
break;
}
if(i==n+)
{
type=k;
return;
}
}
if(k==)//不改变
{
flag=;
for(i=; i<=n; i++)
{
for(j=; j<=n; j++)
{
if(a[i][j]!=b[i][j])
{
flag=;
break;
}
}
if(flag)
break;
}
if(i==n+)
{
type=k;
return;
}
}
}
if(k==)//其他
type=k;
}
void output()
{
printf("%d\n",type);
}
int main()
{
input();
judge();
output();
return ;
}
Transformations 方块转换的更多相关文章
- Transformations 方块转换 USACO 模拟 数组 数学 耐心
1006: 1.2.2 Transformations 方块转换 时间限制: 1 Sec 内存限制: 128 MB提交: 10 解决: 7[提交] [状态] [讨论版] [命题人:外部导入] 题目 ...
- USACO 1.2.2 Transformations 方块转换
Description 一块N x N(1<=N<=10)正方形的黑白瓦片的图案要被转换成新的正方形图案.写一个程序来找出将原始图案按照以下列转换方法转换成新图案的最小方式: 1:转90度 ...
- 洛谷 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度:图案按顺时针 ...
- 【USACO 1.2.2】方块转换
[问题描述] 一块N x N(1<=N<=10)正方形的黑白瓦片的图案要被转换成新的正方形图案.写一个程序来找出将原始图案按照以下列转换方法转换成新图案的最小方式: 1:转90度:图案按顺 ...
随机推荐
- 统计图表类库--libchart使用简介
1.饼图 #载入类文件 include "../libchart/classes/libchart.php"; header("Content-type: image/p ...
- 我的Python成长之路---第三天---Python基础(11)---2016年1月16日(雾霾)
三.深浅拷贝 在Python中将一个变量的值传递给另外一个变量通常有三种:赋值.浅拷贝以及深拷贝 讨论深浅拷贝之前我们把Python的数据类型分为基本数据类型包括数字.字符串.布尔以及None等,还有 ...
- ios7禁止默认划动返回
self.navigationController.interactivePopGestureRecognizer.enabled = NO; 或 在使用之前先要判断是否ios7,不然会导致crash ...
- php 登陆动作详解
<?php class LoginAction extends Action { function index(){ $this->display(); } function do_log ...
- Google Map Android api V2 中使用MapView遇到CameraUpdateFactory is not initialized!的解决办法
先说一下 Map V2 API Key 的问题吧: 在打包APP时需要自己生成一个XXX.keystore 用这个密室库生成的SHA1去申请的key 作为AndroidManifest.xml 中的K ...
- 上证A股股指跌破1900
上证A股股指跌破1900 有钱的同学赶紧买哦,机会难得哈哈!
- App状态管理-AppDelegate
前面提到AppDelegate的实例在UIApplicationMain函数中被创建并调用. AppDelegate的主要作用,可以从其继承类可以看出 class AppDelegate:UIResp ...
- Jsp分页实例---假分页
今天总结一个JSP假分页的实例,由基本功能由js实现. 相较前一篇真分页中程序的功能,丰富了一些.具备首页尾页,和页面跳转功能. 首先还是来总结一下真假分页的优缺点和特性吧. 假分页:从数据库中取出所 ...
- C#写PDF文件类库PDF File Writer介绍
.NET平台开源项目速览(16)C#写PDF文件类库PDF File Writer介绍 阅读目录 1.PDF File Writer基本介绍 2.一个简单的使用案例 3.资源 1年前,我在文章:这 ...
- Qt同步线程(比较清楚,而且QMutex QMutexLocker QReadWriteLock QSemaphore QWaitCondition 每个都有例子)
Qt同步线程 我们知道,多线程有的时候是很有用的,但是在访问一些公共的资源或者数据时,需要进行同步,否则会使数据遭到破坏或者获取的值不正确.Qt提供了一些类来实现线程的同步,如QMutex,QMute ...