zoukankan      html  css  js  c++  java
  • 题目1164:旋转矩阵

    题目描写叙述:

    随意输入两个9阶下面矩阵,要求推断第二个是否是第一个的旋转矩阵,假设是,输出旋转角度(0、90、180、270),假设不是。输出-1。
    要求先输入矩阵阶数,然后输入两个矩阵。每行两个数之间能够用随意个空格分隔。行之间用回车分隔。两个矩阵间用随意的回车分隔。

    输入:

    输入有多组数据。
    每组数据第一行输入n(1<=n<=9),从第二行開始输入两个n阶矩阵。

    输出:

    推断第二个是否是第一个的旋转矩阵,假设是,输出旋转角度(0、90、180、270),假设不是,输出-1。

    假设旋转角度的结果有多个。则输出最小的那个。

    例子输入:
    3
    1 2 3
    4 5 6
    7 8 9
    7 4 1
    8 5 2
    9 6 3
    例子输出:
    90


    C++代码:

    #include<iostream>
    using namespace std;
     
    bool f0();
    bool f180();
    bool f90();
    bool f270();
     
        int a[9][9],b[9][9];
        int i,j;
        int n;
    int main()
    {
     
        while(cin>>n)
        {
            for(i=0;i<n;i++)
            {
                for(j=0;j<n;j++)
                {
                    cin>>a[i][j];
                }//for
            }//for
            for(i=0;i<n;i++)
            {
                for(j=0;j<n;j++)
                {
                    cin>>b[i][j];
                }//for
            }//for
            if(f0())
                cout<<0<<endl;
            else if(f90())
                cout<<90<<endl;
            else if(f180())
                cout<<180<<endl;
            else if(f270())
                cout<<270<<endl;
            else
                cout<<-1<<endl;
        }//while
        return 1;
    }//main
     
    bool f0()
        {
            for(i=0;i<n;i++)
            {
                for(j=0;j<n;j++)
                {
                    if(a[i][j]!=b[i][j])
                        return false;
                }
            }
            return true;
        }//f0
        bool f90()
        {
            for(i=0;i<n;i++)
            {
                for(j=0;j<n;j++)
                {
                    if(a[i][j]!=b[j][n-i-1])
                        return false;
                }
            }
            return true;
        }//f90
        bool f180()
        {
            for(i=0;i<n;i++)
            {
                for(j=0;j<n;j++)
                {
                    if(a[i][j]!=b[n-i-1][n-j-1])
                        return false;
                }
            }
            return true;
        }//f180
        bool f270()
        {
            for(i=0;i<n;i++)
            {
                for(j=0;j<n;j++)
                {
                    if(a[i][j]!=b[n-j-1][i])
                        return false;
                }
            }
            return true;
        }
    /**************************************************************
        Problem: 1164
        User: Carvin
        Language: C++
        Result: Accepted
        Time:0 ms
        Memory:1520 kb
    ****************************************************************/



  • 相关阅读:
    HDU 3999 The order of a Tree (排序二叉树的先序遍历)
    如何从 100 亿 URL 中找出相同的 URL?
    Tomcat源码分析 | 一文详解生命周期机制Lifecycle
    SqlSession与SqlSessionFactory到底是什么关系?
    spring boot-jpa整合QueryDSL来简化复杂操作
    EasyExcel读写Excel
    如何将List集合中相同属性的对象合并
    @Data 注解引出的 lombok
    MySQL配置连接
    Django创建
  • 原文地址:https://www.cnblogs.com/wgwyanfs/p/7130857.html
Copyright © 2011-2022 走看看