【JAVA】 矩阵的旋转

【摘要】 题目描述:
任意输入两个9阶以下矩阵,要求判断第二个是否是第一个的旋转矩阵,如果是,输出旋转角度(0、90、180、270),如果不是,输出-1。
要求先输入矩阵阶数,然后输入两个矩阵,每行两个数之间可以用任意个空格分隔。行之间用回车分隔,两个矩阵间用任意的回车分隔。
12
输入:
输入有多组数据。
每组数据第一行输入n(1<=n<=9),从第二行开始输入两个n阶…

题目描述:

任意输入两个9阶以下矩阵,要求判断第二个是否是第一个的旋转矩阵,如果是,输出旋转角度(090180270),如果不是,输出-1。
要求先输入矩阵阶数,然后输入两个矩阵,每行两个数之间可以用任意个空格分隔。行之间用回车分隔,两个矩阵间用任意的回车分隔。

  
 

输入:

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

  
 

输出:

判断第二个是否是第一个的旋转矩阵,如果是,输出旋转角度(090180270),如果不是,输出-1。

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

  
 

样例输入

3
1 2 3
4 5 6
7 8 9
7 4 1
8 5 2
9 6 3

样例输出

90

解题思路:

只要看原数组中[0][0]位置的数字出现在旋转后数组的哪个位置,就可以知道数组旋转了多少度。

在右上角说明旋转了90度,在右下角说明旋转了180度,在左下角说明旋转了270度,在左上角说明无旋转,即0度。

有了思路之后用代码表达出来就行了。

import java.util.Scanner;

public class P1102 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[][] num1 = new int[n][n]; int[][] num2 = new int[n][n]; int i,j; for (i=0; i<n; i++) { for (j=0; j<n; j++) { num1[i][j] = sc.nextInt(); } } for (i=0; i<n; i++) { for (j=0; j<n; j++) { num2[i][j] = sc.nextInt(); } } if (num2[0][0] == num1[0][0]) System.out.print(0); else if (num2[0][n-1] == num1[0][0]) System.out.print(90); else if (num2[n-1][n-1] == num1[0][0]) System.out.print(180); else if (num2[n-1][0] == num1[0][0]) System.out.print(270); }
}

  
 

本人是代码新手,刚接触Java不久。希望这篇博文能够帮到您。如果您发现了代码中的错误或者您有更好的想法,欢迎您评论指正。

文章来源: blog.csdn.net,作者:cheems404,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/cheems404/article/details/116351771

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享