USACO Training Section 1.2 [USACO1.2]方块转换 Transformations
题目描述
一块N x N(1<=N<=10)正方形的黑白瓦片的图案要被转换成新的正方形图案。写一个程序来找出将原始图案按照以下列转换方法转换成新图案的最小方式:
1:转90度:图案按顺时针转90度。
2:转180度:图案按顺时针转180度。
3:转270度:图案按顺时针转270度。
4:反射:图案在水平方向翻转(以中央铅垂线为中心形成原图案的镜像)。
5:组合:图案在水平方向翻转,然后再按照1到3之间的一种再次转换。
6:不改变:原图案不改变。
7:无效转换:无法用以上方法得到新图案。
如果有多种可用的转换方法,请选择序号最小的那个。
只使用1–7中的一个步骤来完成这次转换。
输入输出格式
输入格式:
第一行: 单独的一个整数N。
第二行到第N+1行: N行每行N个字符(不是“@”就是“-”);这是转换前的正方形。
第N+2行到第2*N+1行: N行每行N个字符(不是“@”就是“-”);这是转换后的正方形。
输出格式:
单独的一行包括1到7之间的一个数字(在上文已描述)表明需要将转换前的正方形变为转换后的正方形的转换方法。
输入输出样例
输入样例#1:
3
@-@
---
@@-
@-@
@--
--@
输出样例#1:
1
说明
题目翻译来自NOCOW。
这个题其实可以输入循环中就能把答案求出来,但是因为这个题比较简单,为了复习一下函数传二维数组的方法。比较好写,写一个旋转90°的函数,180就是旋转两次,270就是3次。然后镜像什么的再求也就容易很多。
下面是AC代码
#include<cstdio>
#include<cstring>
#include<cmath>
#include<iostream>
using namespace std;
char ob[11][11];
char ob2[11][11];
char obj1[11][11];
char obj2[11][11];
char obj3[11][11];
char obj4[11][11];
char obj5[11][11];
char obj6[11][11];
char obj7[11][11];
int n;
void zh(char a[][11],char b[][11]);
bool db(char a[][11],char b[][11]);
int main()
{
scanf("%d",&n);
for(int i=1; i<=n; i++)
for(int j=1; j<=n; j++)
{
scanf(" %c",&ob[i][j]);
obj4[i][n+1-j]= ob[i][j];
}
for(int i=1; i<=n; i++)
for(int j=1; j<=n; j++)
scanf(" %c",&ob2[i][j]);
zh(ob,obj1);
zh(obj1,obj2);
zh(obj2,obj3);
zh(obj4,obj5);
zh(obj5,obj6);
zh(obj6,obj7);
if(db(ob2,obj1) )cout<<1<<endl;
else if(db(ob2,obj2) )cout<<2<<endl;
else if(db(ob2,obj3) )cout<<3<<endl;
else if(db(ob2,obj4) )cout<<4<<endl;
else if(db(ob2,obj5) )cout<<5<<endl;
else if( db(ob2,obj6) )cout<<5<<endl;
else if( db(ob2,obj7) )cout<<5<<endl;
else if(db(ob2,ob) )cout<<6<<endl;
else cout<<7<<endl;
return 0;
}
void zh(char a[][11],char b[][11])
{
for(int i=1; i<=n; i++)
for(int j=1; j<=n; j++)
{
b[i][j]=a[n+1-j][i];
}
}
bool db(char a[][11],char b[][11])
{
for(int i=1; i<=n; i++)
for(int j=1; j<=n; j++)
{
if(b[i][j]!=a[i][j])
return 0;
}
return 1;
}
USACO Training Section 1.2 [USACO1.2]方块转换 Transformations的更多相关文章
- 洛谷 P1205 [USACO1.2]方块转换 Transformations
P1205 [USACO1.2]方块转换 Transformations 题目描述 一块N x N(1<=N<=10)正方形的黑白瓦片的图案要被转换成新的正方形图案.写一个程序来找出将原始 ...
- USACO Training Section 1.2 [USACO1.2]回文平方数
题目描述 回文数是指从左向右念和从右向左念都一样的数.如12321就是一个典型的回文数. 给定一个进制B(2<=B<=20,由十进制表示),输出所有的大于等于1小于等于300(十进制下)且 ...
- [USACO1.2.2]方块转换 Transformations
P1205 [USACO1.2]方块转换 Transformations 标签 搜索/枚举 USACO 题目描述 一块N x N(1<=N<=10)正方形的黑白瓦片的图案要被转换成新的正方 ...
- USACO Training Section 1.1 贪婪的送礼者Greedy Gift Givers
P1201 [USACO1.1]贪婪的送礼者Greedy Gift Givers 题目描述 对于一群(NP个)要互送礼物的朋友,GY要确定每个人送出的钱比收到的多多少.在这一个问题中,每个人都准备了一 ...
- USACO Training Section 1.1 坏掉的项链Broken Necklace
题目描述 你有一条由N个红色的,白色的,或蓝色的珠子组成的项链(3<=N<=350),珠子是随意安排的. 这里是 n=29 的二个例子: 第一和第二个珠子在图片中已经被作记号. 图片 A ...
- USACO Training Section 1.1 Your Ride Is Here
题目描述 众所周知,在每一个彗星后都有一只UFO.这些UFO时常来收集地球上的忠诚支持者.不幸的是,他们的飞碟每次出行都只能带上一组支持者.因此,他们要用一种聪明的方案让这些小组提前知道谁会被彗星带走 ...
- USACO Training Section 1.2 双重回文数 Dual Palindrom
题目描述 如果一个数从左往右读和从右往左读都是一样,那么这个数就叫做"回文数".例如,12321就是一个回文数,而77778就不是.当然,回文数的首和尾都应是非零的,因此0220就 ...
- USACO Training Section 1.1 题解(共4题)
第一题 题目传送门:你的飞碟在这儿 分析 水题一道,输入两个字符串,将它们转换为数字并同时相乘,然后判断一下它们是不是对于47同余就可以了. 代码 #include<bits/stdc++.h& ...
- 等差数列 [USACO Training Section 1.4]
题目描述 一个等差数列是一个能表示成a, a+b, a+2b,…, a+nb (n=0,1,2,3,…)的数列. 在这个问题中a是一个非负的整数,b是正整数.写一个程序来找出在双平方数集合(双平方数集 ...
随机推荐
- go 编译protobuf
D:\project\bin\protoc.exe --plugin=protoc-gen-go=%GOPATH%\bin\protoc-gen-go.exe --go_out=. *.proto 编 ...
- C语言输出菱形
#include<stdio.h> #include<string.h> int main(){ int data[7][7] = {0}; for( ...
- Scala函数式编程(六) 懒加载与Stream
前情提要 Scala函数式编程指南(一) 函数式思想介绍 scala函数式编程(二) scala基础语法介绍 Scala函数式编程(三) scala集合和函数 Scala函数式编程(四)函数式的数据结 ...
- ES6构造函数class 和 ES5构造函数语法
构造函数就是JavaScript程序定义好的函数,我们直接使用就可以,实际也是一种函数,构造函数专门用于生成定义对象,通过构造函数生成的对象,称为实例化对象 构造函数分为两种,一种是JavaScrip ...
- 07-rem
一.什么是rem rem(font size of the root element)是指相对于根元素`的字体大小的单位.它就是一个相对单位. px:一个绝对单位 em:一个相对单位,根据的是当前盒子 ...
- 利用 Github 网络钩子实现自动化部署
GitHub 的网络钩子(webhook)功能,可以很方便的实现自动化部署.本文记录了使用 Node.js 的开发部署过程,当项目的 master 分支被推时,将在服务器进行自动部署 添加网路钩子 在 ...
- python基础之函数详解
Python基础之函数详解 目录 Python基础之函数详解 一.函数的定义 二.函数的调用 三.函数返回值 四.函数的参数 4.1 位置参数 4.2 关键字参数 实参:位置实参和关键字参数的混合使用 ...
- X - Skyscrapers (hard version) CodeForces - 1313C2
题目大意:n个高楼,每个楼最高为mi,要求,第i个楼左边和右边不能有同时比它高的楼.让你求最在n个楼总和最高的情况下,每个楼的高度. 题解:用单调栈来做,n个楼的高度要么是单调递减,要么是单调递增,要 ...
- 搭建Ubuntu虚拟机
搭建Ubuntu虚拟机 前言 1. 啰嗦一下 1.1 ubuntu虚拟机的作用 1.2 为什么选择Ubuntu 1.3 工具准备 2. 正式开始 2.1 安装VMware 2.2 创建Ubuntu虚拟 ...
- [Yii2] 快速套模板,加载JS,CSS(HTML标签<base>)
刚开始学,弄了好久,不知道怎么加载JS.CSS,以及怎么不加载YII2自带的模板!其实真的好简单! 补: 其实是我垃圾,YII2默认访问路径是WEB,所以把style文件放到web下就能加载! 首先把 ...