`
bbsunchen
  • 浏览: 231688 次
  • 性别: Icon_minigender_1
  • 来自: 天朝帝都
社区版块
存档分类
最新评论

USACO Transformation源码

 
阅读更多
/*
ID: bbsunch2
PROG: transform
LANG: C++
*/
#include <iostream>
#include <fstream>
#include <string>
#include <vector>

using namespace std;

vector<vector<char> > rotate90(vector<vector<char> > formerMatrix, int num)
{
    vector<vector<char> > latterMatrix;
    for(int i = 0; i < num; i++)
    {
        vector<char> lineA;
        for(int j = 0; j < num; j++)
        {
            char a = formerMatrix[num-j-1][i];
            lineA.push_back(a);
        }
        latterMatrix.push_back(lineA);
    }
    return latterMatrix;
}

vector<vector<char> > rotate180(vector<vector<char> > formerMatrix, int num)
{
    vector<vector<char> > latterMatrix;
    for(int i = 0; i < num; i++)
    {
        vector<char> lineA;
        for(int j = 0; j < num; j++)
        {
            char a = formerMatrix[num-i-1][num-j-1];
            lineA.push_back(a);
        }
        latterMatrix.push_back(lineA);
    }
    return latterMatrix;
}

vector<vector<char> > rotate270(vector<vector<char> > formerMatrix, int num)
{
    vector<vector<char> > latterMatrix;
    for(int i = 0; i < num; i++)
    {
        vector<char> lineA;
        for(int j = 0; j < num; j++)
        {
            char a = formerMatrix[j][num-i-1];
            lineA.push_back(a);
        }
        latterMatrix.push_back(lineA);
    }
    return latterMatrix;
}

vector<vector<char> > reflection(vector<vector<char> > formerMatrix, int num)
{
    vector<vector<char> > latterMatrix;
    for(int i = 0; i < num; i++)
    {
        vector<char> lineA;
        for(int j = 0; j < num; j++)
        {
            char a = formerMatrix[i][num-j-1];
            lineA.push_back(a);
        }
        latterMatrix.push_back(lineA);
    }
    return latterMatrix;
}

bool compareMatrix(vector<vector<char> > formerMatrix, vector<vector<char> > latterMatrix, int num)
{
    bool matrixEqual = true;
    for(int i = 0; i < num; i++)
    {
        bool lineEqual = true;
        for(int j = 0; j < num; j++)
        {

            if(formerMatrix[i][j] != latterMatrix[i][j])
            {
                lineEqual = false;
                break;
            }
        }
        if(lineEqual == false)
        {
            matrixEqual = false;
        }
    }
    return matrixEqual;
}

int main() {
    ofstream fout ("transform.out");
    ifstream fin ("transform.in");
    vector<vector<char> > matrixA;
    vector<vector<char> > matrixB;
    int num = 0;
    fin >> num;
    for(int i = 0; i < num; i++)
    {
        vector<char> lineA;
        for(int j = 0; j < num; j++)
        {
            char a;
            fin >> a;
            lineA.push_back(a);
        }
        matrixA.push_back(lineA);
    }
    for(int i = 0; i < num; i++)
    {
        vector<char> lineB;
        for(int j = 0; j < num; j++)
        {
            char b;
            fin >> b;
            lineB.push_back(b);
        }
        matrixB.push_back(lineB);
    }
    vector<vector<char> > matrixRotate = rotate90(matrixA, num);
    if(compareMatrix(matrixRotate,matrixB,num))
    {
        fout << 1 << endl;
        return 0;
    }
    matrixRotate = rotate180(matrixA,num);
    if(compareMatrix(matrixRotate,matrixB,num))
    {
        fout << 2 << endl;
        return 0;
    }
    matrixRotate = rotate270(matrixA,num);
    if(compareMatrix(matrixRotate,matrixB,num))
    {
        fout << 3 << endl;
        return 0;
    }
    vector<vector<char> > Matrixreflaction = reflection(matrixA,num);
    if(compareMatrix(Matrixreflaction,matrixB,num))
    {
        fout << 4 << endl;
        return 0;
    }
    matrixRotate = rotate90(Matrixreflaction, num);
    if(compareMatrix(matrixRotate,matrixB,num))
    {
        fout << 5 << endl;
        return 0;
    }
    matrixRotate = rotate180(Matrixreflaction,num);
    if(compareMatrix(matrixRotate,matrixB,num))
    {
        fout << 5 << endl;
        return 0;
    }
    matrixRotate = rotate270(Matrixreflaction,num);
    if(compareMatrix(matrixRotate,matrixB,num))
    {
        fout << 5 << endl;
        return 0;
    }
    if(compareMatrix(matrixA,matrixB,num))
    {
        fout << 6 << endl;
        return 0;
    }
    fout << 7 << endl;
	return 0;
}

 

分享到:
评论

相关推荐

    usaco.rar_USACO 翻译 下载_usaco _usaco 翻译

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

    USACO题集及答案

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

    usaco 2010-2011

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

    usaco 合集usaco 合集usaco 合集

    《USACO 合集:全面解析与学习指南》 USACO,全称为USA Computing Olympiad,是一项针对中学生举办的在线编程竞赛,旨在提升参赛者的算法设计和问题解决能力。这个合集提供了丰富的资源,包括英文原题、中文译题、...

    USACO翻译及题解

    USACO,全称United States Computer Olympiad,是一项面向全球中学生的计算机编程竞赛,旨在提升参赛者在算法设计、问题解决以及计算机科学基础方面的技能。这个压缩包文件提供了丰富的资源,帮助参赛者或学习者更好...

    usaco_A.rar_NOI_NOIP_usaco

    【源码】在“USACO 题库源码第一部分”中,包含的是USACO比赛题目对应的参考解决方案或参赛者提交的代码,这对于学习者来说是非常宝贵的资源。通过分析这些源码,可以学习到如何运用不同的数据结构和算法来解决实际...

    USACO题解+代码+翻译

    USACO,全称United States Computer Olympiad,是一项面向全球中学生的计算机编程竞赛,旨在提升参赛者的算法设计、编程能力和问题解决能力。本压缩包包含了USACO比赛的题解、源代码以及对应的中文翻译,对于想要...

    usaco traning全部数据

    【标题】"usaco traning全部数据" 涉及的是一个编程竞赛训练平台——USACO(USA Computing Olympiad)的数据集。USACO是一个专门为美国中学生设计的在线编程竞赛,旨在提升参赛者的算法设计和编程能力,特别是在解决...

    usaco历年测试数据

    USACO(美国计算机奥林匹克竞赛)是面向全球中学生的一项编程竞赛,主要涉及算法和问题解决能力。这个压缩包文件“usaco历年测试数据”包含了该赛事历年的测试题目和样例输入输出数据,这对于参赛者准备比赛或者提升...

    USACO答案及详解

    某些USACO题目的答案,很详细,代码清晰结构良好,算法高效易于调试

    USACO 1.1 c++源程序

    USACO,全称为United States Computer Olympiad,是一项面向中学生的国际性计算机编程竞赛,旨在提升参赛者的算法设计和编程能力。USACO比赛通常使用C++语言进行,因此"USACO 1.1 c++源程序"指的是USACO入门阶段1.1...

    usaco心得及总结

    ### USACO心得及总结 #### 第一部分 动态规划 **USACO**(美国计算机奥林匹克竞赛)作为一项国际知名的编程竞赛,不仅考验参赛者的编程能力,还对其算法理解和应用有着极高的要求。其中,动态规划(Dynamic ...

    USACO全部测试数据.zip

    USACO,全称United States阿Olympiad in Computer Science,是美国计算机科学奥林匹克竞赛,旨在激发中学生对计算机科学的兴趣,尤其是算法和编程技能。这个"USACO全部测试数据.zip"压缩包包含了历年来USACO比赛的...

    USACO历年比赛测试数据:2004年

    USACO,全称United States Computer Olympiad,是美国计算机奥林匹克竞赛,是一项旨在培养青少年编程技能和算法理解的国际性比赛。这个比赛对于有志于在计算机科学领域深入发展的学生来说,具有很高的学习价值和挑战...

    USACO历年比赛测试数据:2003年

    USACO(USA Computing Olympiad)是美国计算机奥林匹克竞赛,是一项面向中学生的编程竞赛,旨在提升学生的算法设计、编程和问题解决能力。该比赛通常包括训练营和一系列在线比赛,最终选拔出优秀选手代表美国参加...

    usaco历年数据---2001

    标签中包含的关键词:“usaco”、“acm”、“pku”、“测试数据”和“源码”,进一步细化了主题。USACO和ACM都是编程竞赛的名称,而“pku”是比赛的组织者之一。"测试数据"意味着这个压缩包包含了用于检验编程解决...

    USACO全部测试数据

    《USACO全部测试数据详解》 USACO,全称United States Computer Olympiad,是美国计算机奥赛,是一项旨在提升青少年计算机编程能力的竞赛。该竞赛覆盖了基础算法、数据结构、问题解决等多个计算机科学的重要领域,...

    USACO做题代码

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

    usaco_training code

    【标题】"USACO训练代码" USACO(USA Computing Olympiad)是美国计算机奥林匹克竞赛,旨在提高高中生的算法编程能力。这个压缩包“usaco_training code”包含的是一系列用于USACO培训的代码,由作者亲自编写。通过...

    USACO历年比赛测试数据:2005年

    USACO,全称为United States Computer Olympiad,是一项面向美国中学生的编程竞赛,旨在培养青少年在算法设计、问题解决和计算机科学方面的技能。这个压缩包包含的是2005年度USACO比赛的测试数据,对于参赛者或者对...

Global site tag (gtag.js) - Google Analytics