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

第一种:顺时针旋转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. tar 基础

    如何安装---> 出门右转百度. 1.基本使用方式 tar [option] desc_file source_file desc_file 表示要生成的打包文件:source_file 表示需 ...

  2. MAC X OS 自定义分辨率

    1 vi /Library/Preferences/SystemConfiguration/com.apple.Boot.plist 2 3 将该文件修改成如下内容: 4 5 <key>G ...

  3. poj 3370 鸽笼原理知识小结

    中学就听说过抽屉原理,可惜一直没机会见识,现在这题有鸽笼原理的结论,但其实知不知道鸽笼原理都可以做 先总结一下鸽笼原理: 有n+1件或n+1件以上的物品要放到n个抽屉中,那么至少有一个抽屉里有两个或两 ...

  4. 一步一步重写 CodeIgniter 框架 (8) —— 视图的嵌套输出与返回

    视图函数在控制器中通过 $this->load-view() 来调用,从而输出 html,有时候为了调试或附加处理的需要,我们需要打印出这些输出,而不是直接通过浏览器输出,这在 php 中是通过 ...

  5. leetcode第一刷_Binary Tree Inorder Traversal

    递归实现当然太简单,也用不着为了ac走这样的捷径吧..非递归实现还挺有意思的. 树的非递归遍历一定要借助栈,相当于把原来编译器做的事情显式的写出来.对于中序遍历,先要訪问最左下的节点,一定是进入循环后 ...

  6. Android Bluetooth开发

    原文地址:http://developer.android.com/guide/topics/wireless/bluetooth.html 翻译:jykenan 更新:2012.06.19 Andr ...

  7. BZOJ 3375: [Usaco2004 Mar]Paranoid Cows 发疯的奶牛( set )

    果然写得短就跑得慢... 直接用set就行了(你要写棵平衡树也可以).没有包含的话, 假如L(i) <= L(j), 那么R[i] <= R[j]. 所以从小到大扫, 每次查找左端点小于当 ...

  8. QPointer更安全,QScopedPointer自动出范围就删除,QSharedDataPointer帮助实现隐式共享

    http://blog.csdn.net/hai200501019/article/details/8474582http://blog.csdn.net/hai200501019/article/d ...

  9. wince下GetManifestResourceStream得到的Stream是null的解决

    问题的引入 在编程过程中遇到下面这样一个问题: 有这样一个方法: public static AlphaImage CreateFromResource(string imageResourceNam ...

  10. PHP - 字符串操作

    第8章 字符串处理 学习要点: 1.字符串格式化 2.操作子字符串 3.字符串比较 4.查找替换字符串 5.处理中文字符 在每天的编程工作中,处理.调整以至最后控制字符串是很重要的一部分,一般也认为这 ...