JavaStudy——0085:變幻的矩陣
阿新 • • 發佈:2018-11-15
總時間限制: 1000ms 記憶體限制: 65536kB
描述
有一個N x N(N為奇數,且1 <= N <= 10)的矩陣,矩陣中的元素都是字元。這個矩陣可能會按照如下的幾種變幻法則之一進行變幻(只會變幻一次)。
現在給出一個原始的矩陣,和一個變幻後的矩陣,請編寫一個程式,來判定原始矩陣是按照哪一種法則變幻為目標矩陣的。
1.按照順時針方向旋轉90度;
如:
1 2 3 7 4 1
4 5 6 變幻為 8 5 2
7 8 9 9 6 3
2.按照逆時針方向旋轉90度;
如:
1 2 3 3 6 9
4 5 6 變幻為 2 5 8
7 8 9 1 4 7
3.中央元素不變(如下例中的 5),其他元素(如下例中的3)與“以中央元素為中心的對應元素”(如下例中的7)互換;
如:
1 2 3 9 8 7
4 5 6 變幻為 6 5 4
7 8 9 3 2 1
4.保持原始矩陣,不變幻;
5.如果 從原始矩陣 到 目標矩陣 的變幻,不符合任何上述變幻,請輸出5
輸入
第一行:矩陣每行/列元素的個數 N;
第二行到第N+1行:原始矩陣,共N行,每行N個字元;
第N+2行到第2*N+1行:目標矩陣,共N行,每行N個字元;
輸出
只有一行,從原始矩陣 到 目標矩陣 的所採取的 變幻法則的編號。
樣例輸入
5
a b c d e
f g h i j
k l m n o
p q r s t
u v w x y
y x w v u
t s r q p
o n m l k
j i h g f
e d c b a
樣例輸出
3
Accepted程式碼
import java.util.Scanner;
public class Main {
public static void main(String args[]) {
Scanner in=new Scanner(System.in);
char[][] matrix1=new char[10][10];
char[][] matrix2=new char[10][10];
boolean flag1,flag2,flag3,flag4;
int n=in.nextInt();
for(int i=0;i<n;i++)
for(int j=0;j< n;j++)
matrix1[i][j]=in.next().charAt(0);
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
matrix2[i][j]=in.next().charAt(0);
flag1=true;
for(int i=0,ci=n-1;i<n;i++,ci--)
for(int j=0,cj=0;j<n;j++,cj++)
if(matrix1[i][j]==matrix2[cj][ci]) continue;
else {
flag1=false;break;
}
if(flag1) System.out.println(1);
else {
flag2=true;
for(int i=0,ci=0;i<n;i++,ci++)
for(int j=0,cj=n-1;j<n;j++,cj--)
if(matrix1[i][j]==matrix2[cj][ci]) continue;
else {
flag2=false;break;
}
if(flag2) System.out.println(2);
else {
flag3=true;
for(int i=0,ci=n-1;i<n;i++,ci--)
for(int j=0,cj=n-1;j<n;j++,cj--)
if(matrix1[i][j]==matrix2[ci][cj]) continue;
else {
flag3=false;break;
}
if(flag3) System.out.println(3);
else {
flag4=true;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
if(matrix1[i][j]==matrix2[i][j]) continue;
else {
flag4=false;break;
}
if(flag4)
System.out.println(4);
else
System.out.println(5);
}
}
}
in.close();
}
}