`

【水题】USACO Transformations

阅读更多
进入USACO要注册才能看题: http://train.usaco.org/usacogate

题目:【翻译版、是别处的网站】http://www.wzoi.org/usaco/13%5C408.asp

SAMPLE INPUT (file transform.in)
3
@-@
---
@@-
@-@
@--
--@
SAMPLE OUTPUT (file transform.out)
1


水题……未能一次A……而且一开始还理解错题意……悲催


/*
ID: 1006100071
PROG: transform
LANG: C++
*/
#include <iostream>
#include <fstream>
#include <algorithm>
#include <string>
#include <set>
//#include <map>
#include <queue>
#include <utility>
#include <iomanip>
#include <stack>
#include <list>
#include <vector>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <ctime>
#include <ctype.h>
using namespace std;

bool match (char a[][15], char b[][15], int n)	//检查是否匹配
{
	int i;
	for (i = 0; i < n; i++)
		if (strcmp (a[i], b[i]))
			return false;
	return true;
}
void copy (char a[][15], char b[][15], int n)	//b复制到a
{
	int i;
	for (i = 0; i < n; i++)
		strcpy (a[i], b[i]);
}
void _90right (char a[][15], int n)	//对a进行90度右转
{
	int i, j;
	char b[15][15];
	for (i = 0; i < n; i++)
	{
		for (j = 0; j < n; j++)
		{
			b[j][n-1-i] = a[i][j];
			b[j][n] = 0;
		}
	}
	for (i = 0; i < n; i++)
		strcpy (a[i], b[i]);
}
void reflect (char a[][15], int n)	//对a进行镜面反射
{
	char b[15][15];
	int i, j;
	for (i = 0; i < n; i++)
	{
		for (j = n - 1; j >= 0; j--)
			b[i][n-1-j] = a[i][j];
		b[i][n] = 0;
	}
	for (i = 0; i < n; i++)
		strcpy (a[i], b[i]);
}
int main()
{
	/*freopen ("transform.in", "r", stdin);
	freopen ("transform.out", "w", stdout);*/
	char before[15][15], after[15][15], tp[15][15];
	int n, i;
	scanf ("%d", &n);
	for (i = 0; i < n; i++)
		scanf ("%s", before+i);
	for (i = 0; i < n; i++)
		scanf ("%s", after+i);
	//**************************右转3种情况:90 180 270
	copy (tp, before, n);
	for (i = 1; i <= 3; i++)
	{
		_90right (tp, n);
		if (match (tp, after, n))
		{
			printf ("%d\n", i);
			return 0;
		}
	}
	//**************************镜面翻转,也就是水平翻转
	copy (tp, before, n);
	reflect (tp, n);
	if (match (tp, after, n))
	{
		puts ("4");
		return 0;
	}
	//**************************镜面+旋转
	copy (tp, before, n);
	reflect (tp, n);
	for (i = 1; i <= 3; i++)
	{
		_90right (tp, n);
		if (match (tp, after, n))
		{
			puts ("5");
			return 0;
		}
	}
	//**************************本来就跟原来一样
	if (match (before, after, n))
	{
		puts ("6");
		return 0;
	}
	puts ("7");	//方法编号必须要从小到大一次判断,才能保证所得编号最小
	return 0;
}
0
1
分享到:
评论

相关推荐

    USACO题目Transformations(方块转换)及代码解析

    Transformations(方块转换)是一种USACO题目,旨在解决将一个N x N的黑白瓦片图案转换成新的正方形图案的问题。该问题需要使用七种不同的转换方法来将原始图案转换成新的图案,包括旋转90度、180度、270度、水平...

    USACO试题英文原题、译题及相应题解

    USACO,全称为United States Computer Olympiad,是一项面向美国中学生的计算机编程竞赛,旨在培养学生的算法思维和问题解决能力。这个压缩包包含的是USACO历年月赛的试题,以及部分试题的数据和详细题解,是学习和...

    USACO全部译题

    - “MilkingCows”和“Transformations”可能需要使用动态规划来解决。动态规划是一种算法策略,它将问题分解为重叠的子问题,并存储这些子问题的解,避免重复计算。 4. 图论(Graph Theory): - “MixingMilk”...

    USACO经典试题配数据

    资源中的"USACO英文原题.pdf"提供了所有试题的原始英文版本,这对于熟悉英文阅读和理解国际标准的表述至关重要。同时,"USACO全部译题.pdf"则为这些题目提供了中文翻译,帮助那些英语阅读能力有限或希望更直观理解...

    USACO官网93题fps格式 OJ题库

    USACO 官网第一到 五章 练习题中文语言官方数据 fps格式支持导入所有OJ 1 [1.1] 你的飞碟在这儿 Your Ride Is Here 2 [1.1] 贪婪的送礼者Greedy Gift Givers 3 [1.1] 黑色星期五Friday the Thirteenth 4 [1.1] 坏掉...

    USACO试题精选.pdf

    USACO试题精选是一本精选了美国计算机奥林匹克竞赛(USACO)历史上部分题目的题库,包含了诸多针对C++编程的学习题目。这些题目覆盖了多方面的知识点,不仅适合学习算法和编程技巧,而且对于C++学习者来说,是一套很...

    usaco历年试题---2002

    《USACO历年试题——2002》 USACO,全称为USA Computing Olympiad,是美国计算机奥林匹克竞赛,旨在提升中学生的算法设计和编程能力。2002年的USACO试题集,是这一赛事历史上的一个重要部分,对于学习算法、准备ACM...

    USACO做题代码

    USACO,全称为United States Computer Olympiad,是一项面向中学生的国际性计算机编程竞赛,旨在提升参赛者在算法设计、问题解决以及编程方面的技能。USACO比赛通常包含多个编程题目,参赛者需要使用C++、Java等语言...

    USACO月赛十年题典

    ### USACO月赛十年题典知识点概览 #### 一、USACO简介与重要性 - **USACO**(USA Computing Olympiad)是美国计算机奥林匹克竞赛,旨在为美国选拔并培养参加国际信息学奥林匹克(IOI)的队伍。自2000年以来,USACO...

    USACO题解整理版

    USACO(United States of America Computing Olympiad,美国信息学奥林匹克竞赛)是一个面向中学生的计算机编程竞赛,题解整理版中涉及的几个题目,下面将一一介绍它们的解题思路和涉及的关键知识点。 首先,...

    usaco 合集usaco 合集usaco 合集

    这个合集提供了丰富的资源,包括英文原题、中文译题、测试数据以及解答,对于想要深入学习和准备USACO竞赛的学生来说,是一份极其宝贵的资料。 1. **USACO译题.chm**:这份文件包含了USACO历年竞赛的题目翻译,对于...

    usaco.rar_USACO 翻译 下载_usaco _usaco 翻译

    USACO,全称为United States阿Olympiad in Informatics,是美国计算机奥林匹克竞赛,旨在为高中生提供一个学习和展示编程技能的平台。这个比赛涵盖了算法、数据结构以及问题解决等多个方面,对于想要深入理解计算机...

    USACO翻译及题解

    "USACO全部译题.pdf"则是一份完整的题解集,包含了对所有原题的中文翻译和解答。这些解答通常详细解释了问题的解决方案,包括思路、算法和代码实现,对于学习者来说,是理解题目和检查自己解题思路的重要参考。 ...

    USACO试题精选

    8. **模拟和建模**:对实际问题的抽象和建模,然后用程序进行模拟,比如模拟交通灯控制、模拟水桶打水等问题。 9. **竞赛编程技巧**:如快速读入、输出格式化、调试技巧等,这些都是在竞赛环境中提高效率的关键。 ...

    USACO题集及答案

    USACO,全称为United States Computer Olympiad,是一项面向全球中学生的计算机编程竞赛,旨在提升参赛者的算法设计、问题解决和编程能力。该比赛每年举行,分为青铜、白银、黄金和铂金四个级别,难度逐渐递增。...

    USACO 历年全部测试数据

    含2001~2017全部比赛赛题测试...2001~2007 数据√ 题面× 标程题解× 2008~2010 数据√ 题面√ 标程题解× 2011~2017 数据√ 题面√ 标程题解√ 其中除2008~2010外其他年份均按照年度、月度、金银铜白金组别整理完全

    usaco 2010-2011

    ### USACO 2010-2011 季度竞赛概览与关键信息 #### 一、概述 美国计算机奥林匹克(USACO)是面向全球中学生的计算机科学竞赛,旨在发掘并培养计算机科学领域的年轻人才。USACO 2010-2011 季度竞赛于 2010 年 11 月...

    USACO英汉对照题目

    【USACO 英汉对照题目】是USA Computing Olympiad(美国计算机奥林匹克竞赛)的一部分,这是一个专门为信息学竞赛选手提供训练的在线题库。USACO 提供了一种章节递进的学习模式,从基础到高级,涵盖C和C++语言,帮助...

Global site tag (gtag.js) - Google Analytics