《JAVA机试之旋转矩阵》由会员分享,可在线阅读,更多相关《JAVA机试之旋转矩阵(4页珍藏版)》请在金锄头文库上搜索。
1、机试复试 java 旋转矩阵1.描述题目描述:任意输入两个9阶以下矩阵,要求判断第二个是否是第一个的旋转矩阵,如果是,输出旋转角度(0、90、180、270) ,如果不是,输出-1。要求先输入矩阵阶数,然后输入两个矩阵,每行两个数之间可以用任意个空格分隔。行之间用回车分隔,两个矩阵间用任意的回车分隔。输入:输入有多组数据。每组数据第一行输入 n(1=n=9),从第二行开始输入两个 n 阶矩阵。输出:判断第二个是否是第一个的旋转矩阵,如果是,输出旋转角度(0、90 、180 、270 ) ,如果不是,输出-1。如果旋转角度的结果有多个,则输出最小的那个。样例输入:31 2 34 5 67 8 9
2、7 4 18 5 29 6 3样例输出:902.SwitchMartix.javapackage com.xh.java;/包名import java.util.Scanner;public class SwitchMartixprivate static Scanner sc=new Scanner(System.in);private static int n; /方阵规模/产生 n 阶方阵public static int getMatrix()intA=new intnn; for(int i=0;in;i+)for(int j=0;jn;j+)Aij=sc.nextInt();ret
3、urn A;/获取旋转角度 angle: -1 表示不是旋转矩阵;旋转矩阵角度0 90 180 270public static int getAngle(inta,intb) int angle = 0;for(int i = 0; i n; i +) for(int j = 0; j n; j +) /开始遍历if(angle = 0) /假设修正法 角度依次增加if(aij = bij) continue; else angle = 90; if(angle = 90) /假设修正法if(aij = bjn - i - 1) continue; else angle = 180; if(
4、angle = 180) /假设修正法if(aij = bn - i - 1n - j -1) continue; else angle = 270; if(angle = 270) /假设修正法if(aij = bn - j - 1i) continue; else return -1; /不是旋转矩阵,直接返回 /for /forreturn angle; /主函数public static void main(String args) /输入数据n=sc.nextInt();/输入两个 n 阶方阵intA=getMatrix(); intB=getMatrix();/调用角度判断方法int angle=getAngle(A,B);/输出结果System.out.println(angle);