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

1:转90度:图案按顺时针转90度。

2:转180度:图案按顺时针转180度。

3:转270度:图案按顺时针转270度。

4:反射:图案在水平方向翻转(以中央铅垂线为中心形成原图案的镜像)。

5:组合:图案在水平方向翻转,然后再依照1到3之间的一种再次转换。

6:不改变:原图案不改变。

7:无效转换:无法用以上方法得到新图案。

假设有多种可用的转换方法,请选择序号最小的那个。

仅仅使用1--7中的一个步骤来完毕这次转换。

[编辑]格式

PROGRAM NAME: transform

INPUT FORMAT:

(file transform.in)

第一行: 单独的一个整数N。

第二行到第N+1行: N行每行N个字符(不是“@”就是“-”)。这是转换前的正方形。

第N+2行到第2*N+1行: N行每行N个字符(不是“@”就是“-”);这是转换后的正方形。

OUTPUT FORMAT:

(file transform.out)

单独的一行包含1到7之间的一个数字(在上文已描写叙述)表明须要将转换前的正方形变为转换后的正方形的转换方法。

[编辑]SAMPLE INPUT

3
@-@
---
@@-
@-@
@--
--@

[编辑]SAMPLE OUTPUT

1
/*
ID: zwcwu52
PROG: transform
LANG: C++
*/ #include <iostream>
#include <fstream>
#include <string> using namespace std; char blkSrc[10][10], blkDst[10][10]; //源方阵、目标方阵 int main()
{
ofstream fout ("transform.out");
ifstream fin ("transform.in"); unsigned N; //阶数
unsigned num = 7; //方案数字 fin >> N; //读取源方阵
for(unsigned i = 0; i < N; i++)
{ for(unsigned j = 0; j < N; j++)
{fin >> blkSrc[i][j];}
} //读取目标方阵
for(unsigned i = 0; i < N; i++)
{ for(unsigned j = 0; j < N; j++)
{fin >> blkDst[i][j];}
} do
{
bool b = true; //b 标识是否全然符合 //按方案1检測
for(unsigned i = 0; i < N; i++)
{ for(unsigned j = 0; j < N; j++)
{
if(blkSrc[i][j] != blkDst[j][N - i - 1])
{
b = false;
break;
}
}
}
if(true == b)
{
num = 1;
break;
} //按方案2检測
b = true;
for(unsigned i = 0; i < N; i++)
{ for(unsigned j = 0; j < N; j++)
{
if(blkSrc[i][j] != blkDst[N- i - 1][N - j - 1])
{
b = false;
break;
}
}
}
if(true == b)
{
num = 2;
break;
} //按方案3检測
b = true;
for(unsigned i = 0; i < N; i++)
{ for(unsigned j = 0; j < N; j++)
{
if(blkSrc[i][j] != blkDst[N- j - 1][i])
{
b = false;
break;
}
}
}
if(true == b)
{
num = 3;
break;
} //按方案4检測
b = true;
for(unsigned i = 0; i < N; i++)
{ for(unsigned j = 0; j < N; j++)
{
if(blkSrc[i][j] != blkDst[i][N - j - 1])
{
b = false;
break;
}
}
}
if(true == b)
{
num = 4;
break;
} //按方案5检測
b = true;
for(unsigned i = 0; i < N; i++)
{ for(unsigned j = 0; j < N; j++)
{
if(blkSrc[i][j] != blkDst[N - j - 1][N - i - 1])
{
b = false;
break;
}
}
}
if(true == b)
{
num = 5;
break;
} //按方案5检測
b = true;
for(unsigned i = 0; i < N; i++)
{ for(unsigned j = 0; j < N; j++)
{
if(blkSrc[i][j] != blkDst[N - i - 1][j])
{
b = false;
break;
}
}
}
if(true == b)
{
num = 5;
break;
} //按方案5检測
b = true;
for(unsigned i = 0; i < N; i++)
{ for(unsigned j = 0; j < N; j++)
{
if(blkSrc[i][j] != blkDst[j][i])
{
b = false;
break;
}
}
}
if(true == b)
{
num = 5;
break;
} //按方案6检測
b = true;
for(unsigned i = 0; i < N; i++)
{ for(unsigned j = 0; j < N; j++)
{
if(blkSrc[i][j] != blkDst[i][j])
{
b = false;
break;
}
}
}
if(true == b)
{
num = 6;
break;
} }while(0); fout << num << endl; return 0;
}

【USACO1.2_2】★Transformations 方块转换的更多相关文章

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

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

  2. [USACO1.2.2]方块转换 Transformations

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

  3. Transformations 方块转换

    题目是中文题,就不做什么解释了,纯模拟题,主要要搞清楚这几种装换方式下标的变化: 第一种:顺时针旋转90度: c[j][n-i+1]=a[i][j]; 第二种:旋转180度: c[n-i+1][n-j ...

  4. USACO 1.2.2 Transformations 方块转换

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

  5. 洛谷 Transformations 方块转换

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

  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. TCP和UDP发送数据包的大小问题

    用UDP协议发送时,用sendto函数最大能发送数据的长度为:65535-20-8=65507字节,其中20字节为IP包头长度,8字节为UDP包头长度.用sendto函数发送数据时,如果指的的数据长度 ...

  2. Yii 简明学习教程

    Yii是一个基于组件的高性能PHP框架,用于快速开发Web应用程序(下面内容基于Yii 1.1) 1. 典型的工作流 用户向入口脚本index.php发起请求 入口脚本加载应用配置config.php ...

  3. JavaScript学习之事件原理和实践

    1 基本概念 1.1 事件 JavaScript与HTML之间的交互是通过事件实现的. 事件是文档或浏览器窗口中发生的一些特定的交互瞬间,在事件上可以注册处理程序,以便当事件发生时,处理程序中的代码得 ...

  4. HTML5实战与剖析之原生拖拽(一拖拽历史概述)

    提起拖拽,我就想起了在JavaScript培训的时候一个非常好玩的效果,那就是拖拽了.可以用鼠标任意拖拽着一个物体到任何你想去的地方. 最早拥有JavaScript拖拽功能的是IE4浏览器.当时,网页 ...

  5. 手机锁屏js倒计时停止问题解决办法探索

    如图,有这么个需求,测试人员在测试过程中提了一个bug,手机锁屏再唤醒倒计时时间没有更新,仍从锁屏的时间继续,于是开始寻找解决之法 经了解得知,锁屏时候,浏览器的一切活动会停止运行,那么js也无法幸免 ...

  6. https请求过程

    我们都知道HTTPS能够加密信息,以免敏感信息被第三方获取.所以很多银行网站或电子邮箱等等安全级别较高的服务都会采用HTTPS协议. HTTPS简介 HTTPS其实是有两部分组成:HTTP + SSL ...

  7. 一个简单的ConnectionPool,手动搞

    看了一圈, 没看到稍微好用的ConnectionPool, 除了一个aiomysql, 但是这个是异步的, 我暂时没有用到这么高版本的Python, 所以就动手造一个轮子. 原理比较简单, 先造一个线 ...

  8. javascript类型系统

    前面的话 除了对象之外,数组Array类型可能是javascript中最常用的类型了.而且,javascript中的数组与其他多数语言中的数组有着相当大的区别.本文将介绍javascript中的数组A ...

  9. Spring 什么是 IOC 控制反转 ?什么是依赖注入?spring的用处 好处 为什么要用

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha Spring是一个开源的控制反转(Inversion of Control ,IoC)和 ...

  10. 【刷水-贪心】BZOJ1629-[Usaco2007 Demo]Cow Acrobats

    [题目大意] 有n个头牛,给出体重和力量.每个牛的危险值等于它上面的牛的体重总和减去它的力量值,求所有方案中危险值最大值的最小值. [思路] 贪心.一开始脑补的贪心是体重大的先放下面,体重相同的根据力 ...