题目是中文题,就不做什么解释了,纯模拟题,主要要搞清楚这几种装换方式下标的变化:

第一种:顺时针旋转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 方块转换的更多相关文章

  1. Transformations 方块转换 USACO 模拟 数组 数学 耐心

    1006: 1.2.2 Transformations 方块转换 时间限制: 1 Sec  内存限制: 128 MB提交: 10  解决: 7[提交] [状态] [讨论版] [命题人:外部导入] 题目 ...

  2. USACO 1.2.2 Transformations 方块转换

    Description 一块N x N(1<=N<=10)正方形的黑白瓦片的图案要被转换成新的正方形图案.写一个程序来找出将原始图案按照以下列转换方法转换成新图案的最小方式: 1:转90度 ...

  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. [USACO1.2.2]方块转换 Transformations

    P1205 [USACO1.2]方块转换 Transformations 标签 搜索/枚举 USACO 题目描述 一块N x N(1<=N<=10)正方形的黑白瓦片的图案要被转换成新的正方 ...

  6. 洛谷 P1205 [USACO1.2]方块转换 Transformations

    P1205 [USACO1.2]方块转换 Transformations 题目描述 一块N x N(1<=N<=10)正方形的黑白瓦片的图案要被转换成新的正方形图案.写一个程序来找出将原始 ...

  7. Spark Streaming之六:Transformations 普通的转换操作

    与RDD类似,DStream也提供了自己的一系列操作方法,这些操作可以分成四类: Transformations 普通的转换操作 Window Operations 窗口转换操作 Join Opera ...

  8. USACO Training Section 1.2 [USACO1.2]方块转换 Transformations

    题目描述 一块N x N(1<=N<=10)正方形的黑白瓦片的图案要被转换成新的正方形图案.写一个程序来找出将原始图案按照以下列转换方法转换成新图案的最小方式: 1:转90度:图案按顺时针 ...

  9. 【USACO 1.2.2】方块转换

    [问题描述] 一块N x N(1<=N<=10)正方形的黑白瓦片的图案要被转换成新的正方形图案.写一个程序来找出将原始图案按照以下列转换方法转换成新图案的最小方式: 1:转90度:图案按顺 ...

随机推荐

  1. Linux下查看二进制文件命令

    一.在Linux下查看二进制文件的软件: xxd hexdump 二.编辑: 1.biew 2.hexedit 3.vim Vim 来编辑二进制文件.Vim 本非为此而设计的,因而有若干局限.但你能读 ...

  2. poj1887 Testing the CATCHER

    Testing the CATCHER Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 13968   Accepted: 5 ...

  3. sparkUI使用与扩展

      http://www.jianshu.com/p/8e4c38d0c44e

  4. parquet 合并元数据

    合并元数据:两个数据集,有着一部分相同的列,将他们合并成一个数据集时merge的过程. 合并的规则:相同的列,在新的数据集中,是通用的列, 各自不同的列,也作为新的数据集的列. Spark将数据写入到 ...

  5. Inter IPP 跟 Microsoft V100编译器区别

    最近做项目用了两个编译器,由于是一种精度的算法计算,对计算的精度要求非常高,同时都用的float型,发现inter的结果比vs的结果好许多.但是不知道是什么原因,最后测试发现,是两个编译器的问题.   ...

  6. 初始WebApi 利用WebApi实现基础的CRUD

    微软的web api是在vs2012上的mvc4项目绑定发行的,它提出的web api是完全基于RESTful标准的,完全不同于之前的(同是SOAP协议的)wcf和webService.它是简单,代码 ...

  7. wamp安装后打开默认网页显示dir,图标红点

    首先网页显示dir,是因为服务这些没启动,跟图标红点是一个原因,解决了图标红点,就能解决只显示dir的问题. 先测试是不是端口占用问题,如图: 如果是,那就继续往下走. 单击图标左键(记住是左键),然 ...

  8. WM_PAINT消息在窗口重绘的时候产生,那什么时候窗口会重绘(异步工作方式效率高、灵活性强,还有UpdateWindow和RedrawWindow帮忙)

    Q:wm_paint消息在窗口重绘的时候产生,那什么时候窗口会重绘?? A: 严格地说,只有当收到WM_PAINT消息后窗口会重绘 但是引起这个消息的事件有很多, 比如:1.首次创建 2.移动 3.改 ...

  9. 【HTTP】Fiddler(三)- Fiddler命令行和HTTP断点调试

    一. Fiddler内置命令. 上一节(使用Fiddler进行抓包分析)中,介绍到,在web session(与我们通常所说的session不是同一个概念,这里的每条HTTP请求都成为一个sessio ...

  10. 基于visual Studio2013解决C语言竞赛题之1025Bessel函数

          题目 解决代码及点评 /* 功能:25. Bessel函数Jn(X)有以下的递推关系: J[n+1](x)=(2n+1)/x*J[n](x)-J[n-1](x) 并 ...