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度:图案按顺 ...
随机推荐
- Python基础1:一些小知识汇总
一.#!usr/bin/env python 脚本语言的第一行,指定执行脚本的解释器. #!/usr/bin/python 是告诉操作系统执行这个脚本的时候,调用/usr/bin下的python解释器 ...
- 在Struts 2中实现IoC
IoC(Inversion of Control,以下译为控制反转)随着Java社区中轻量级容器(Lightweight Contianer)的推广而越来越为大家耳熟能详.在此,我不想再多费唇舌来解释 ...
- Java--日期的使用
Date 类: 最基础的日期时间类,返回一个相对日期的毫秒数.精确到毫秒,但不支持日期的国际化和分时区显示. Calender类: 相对于Date更加强大的时间类,是抽象类,提供了常规的日期修改功能和 ...
- 单实例支撑每天上亿个请求的SSDB
SSDB 是一个 C++ 开发的 NoSQL 存储服务器, 支持 zset, map 数据结构, 可替代 Redis, 特别适合存储集合数据. SSDB 被开发和开源出来后, 已经在生产环境经受了3个 ...
- Android常用动画alpha和rotate同时使用
Android的动画可以是一种动画,也可以多种动画作用于一张图片上,如RotaeAnimation和AlphaAnimation同时放到一个配置文件中 alpha1.xml <?xml vers ...
- android Bitmap围绕一个点进行旋转
在项目中需要使用定位功能,也就是一个点围绕一个圆心进行旋转,查看了canvas的函数也就只有一个 canvas.drawBitmap(bitmap, matrix, paint)通过使用Matrix来 ...
- 利用MySQL 的GROUP_CONCAT函数实现聚合乘法
MySQL 聚合函数里面提供了加,平均数.最小,最大等,可是没有提供乘法,我们这里来利用MYSQL现有的GROUP_CONCAT函数实现聚合乘法. 先创建一张演示样例表: CREATE TABLE ` ...
- pthread_detach(pthread_self())
pthread_detach(pthread_self()) 将状态改为unjoinable状态,确保资源的释放.其实简单的说就是在线程函数头加上 pthread_detach(pthread_sel ...
- 03-IOSCore - XML及解析、Plist
一.XML 可扩展标记语言 是什么?是一段有规范的字符串, 用在哪?用在任何地方 语法: * 结点Node <结点名 属性名="属性值"> 结点内容 </结点名& ...
- HEVC码率控制浅析——HM代码阅读之一
HM的码率控制提案主要参考如下三篇:K0103,M0036,M0257.本文及后续文章将基于HM12.0进行讨论,且首先仅讨论K0103对应的代码,之后再陆续补充M0036,M0257对应的代码分析, ...