Advertisement

牛客网 旋转矩阵(模拟、北航机试)

阅读量:
题目描述

任意输入两个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

Solution

根据各个旋转角度单独判断。

复制代码
    #include <iostream>
    #include <cstdio>
    using namespace std;
    const int maxn = 10;
    int n;
    int num1[maxn][maxn], num2[maxn][maxn];
    bool rotate_0()
    {
    for (int i = 0; i < n; i++)
        for (int j = 0; j < n; j++)
            if (num1[i][j] != num2[i][j])
                return false;
    return true;
    }
    bool rotate_90()
    {
    for (int i = 0; i < n; i++)
        for (int j = 0; j < n; j++)
            if (num1[i][j] != num2[j][n - i - 1])
                return false;
    return true;
    }
    bool rotate_180()
    {
    for (int i = 0; i < n; i++)
        for (int j = 0; j < n; j++)
            if (num1[i][j] != num2[n - i - 1][n - j - 1])
                return false;
    return true;
    }
    bool rotate_270()
    {
    for (int i = 0; i < n; i++)
        for (int j = 0; j < n; j++)
            if (num1[i][j] != num2[n - j - 1][i])
                return false;
    return true;
    }
    int main()
    {
    //    freopen("in.txt","r",stdin);
    while (~scanf("%d", &n))
    {
        for (int i = 0; i < n; i++)
            for (int j = 0; j < n; j++)
                scanf("%d", &num1[i][j]);
        for (int i = 0; i < n; i++)
            for (int j = 0; j < n; j++)
                scanf("%d", &num2[i][j]);
        if (rotate_0())
            printf("0\n");
        else if (rotate_90())
            printf("90\n");
        else if (rotate_180())
            printf("180\n");
        else if (rotate_270())
            printf("270\n");
        else
            printf("-1\n");
    }
    return 0;
    }
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    

全部评论 (0)

还没有任何评论哟~