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

第一种:顺时针旋转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. 为什么 Flask 有那么多的好评?

    著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处.作者:松鼠奥利奥链接:http://www.zhihu.com/question/28902969/answer/42530571来 ...

  2. Java NIO--初步认识

    : 一.java NIO 和阻塞I/O的区别      1. 阻塞I/O通信模型      2. java NIO原理及通信模型 二.java NIO服务端和客户端代码实现 一.java NIO 和阻 ...

  3. CodeForces 276D – Little Girl and Maximum XOR 贪心

    整整10个月后第二次搞这个问题才搞懂........第一次还是太随意了. 解题思路: 经过打表可得规律答案要么是0 要么是2的N次 - 1 要得到最大的XOR值,其值一定是2的N次 - 1 即在 l ...

  4. html向servlet传乱码解决办法

    html 设置为utf-8格式 <meta http-equiv="content-type" content="text/html;charset=UTF-8&q ...

  5. django笔记(二)

    Model many-to-many可以通过through来定义详细信息. 表结构: property django可以用F和Q来配合查找,F可以用于同一个model不同field之间进行比较,可以对 ...

  6. 设计模式 ( 十五 ) 中介者模式Mediator(对象行为型)

    设计模式 ( 十五 ) 中介者模式Mediator(对象行为型) 1.概述 在面向对象的软件设计与开发过程中,根据“单一职责原则”,我们应该尽量将对象细化,使其只负责或呈现单一的职责,即将行为分布到各 ...

  7. JSpider是一个用Java实现的WebSpider

    JSpider是一个用Java实现的WebSpider,JSpider的执行格式如下: jspider [URL] [ConfigName] URL一定要加上协议名称,如:http://,否则会报错. ...

  8. HDU1878 欧拉回路 - from lanshui_Yang

    Problem Description 欧拉回路是指不令笔离开纸面,可画过图中每条边仅一次,且可以回到起点的一条回路.现给定一个图,问是否存在欧拉回路?   Input 测试输入包含若干测试用例.每个 ...

  9. 【ant项目构建学习点滴】--(3)打包及运行jar文件

    <?xml version="1.0" encoding="UTF-8"?> <project default="compile&q ...

  10. ant-学习记录二

    <?xml version="1.0"?> <project name="targetStudy" default="mkdir&q ...