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
    ****************************************************************/



  • 相关阅读:
    做了48小时爸爸的感觉!
    利用Session和HashTable制作购物车
    vs2005控件演示之 Literal
    vs2005/.net2.0 控件实例之 下拉列表《DropDownList》
    vs2005/.net2.0 控件实例之 单选按纽和复选框 <RadioButton><CheckBox>
    vs2005/.net2.0 控件实例之 单选列表和复选列表
    一个被大多数初级程序员忽略的安全问题 [严重]
    使用Northwind和Entity框架的ASP.NET MVC实例发布
    对话Spring.NET
    揭开HTML 5工作草稿的神秘面纱
  • 原文地址:https://www.cnblogs.com/wgwyanfs/p/7130857.html
Copyright © 2011-2022 走看看