图形的花样翻转(洛谷P1205题题解,Java语言描述)
生活随笔
收集整理的這篇文章主要介紹了
图形的花样翻转(洛谷P1205题题解,Java语言描述)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目要求
P1205題目鏈接
分析
每一種變換都很麻煩,不好推,我選擇把每一個封裝成單獨的函數,并且為了變換5對變換1、2、3的復用而調整了參數和返回值。
具體的每種變換可以看具體的函數實現,很清楚的。
怎么推我也不太會,我覺得就可以表下標[i,j][i,j][i,j],找規律,然后瘋狂debug……我找了大概一個半小時……
AC代碼(Java語言描述)
import java.util.Arrays; import java.util.Scanner;public class Main {private static char[][] chars1, chars2;private static int num;private static boolean judge1(char[][] chars1) {char[][] newChars = new char[num][num];for (int i = 0; i < num; i++) {for (int j = 0; j < num; j++) {newChars[j][num-i-1] = chars1[i][j];}}return Arrays.deepEquals(newChars, chars2);}private static boolean judge2(char[][] chars1) {char[][] newChars = new char[num][num];for (int i = 0; i < num; i++) {for (int j = 0; j < num; j++) {newChars[num-i-1][num-j-1] = chars1[i][j];}}return Arrays.deepEquals(newChars, chars2);}private static boolean judge3(char[][] chars1) {char[][] newChars = new char[num][num];for (int i = 0; i < num; i++) {for (int j = 0; j < num; j++) {newChars[num-j-1][i] = chars1[i][j];}}return Arrays.deepEquals(newChars, chars2);}private static char[][] generateJudge4Arr() {char[][] newChars = new char[num][num];for (int i = 0; i < num; i++) {for (int j = 0; j < num; j++) {newChars[i][num-j-1] = chars1[i][j];}}return newChars;}private static boolean judge4() {char[][] newChars = generateJudge4Arr();return Arrays.deepEquals(newChars, chars2);}private static boolean judge5() {char[][] newChars = generateJudge4Arr();return judge1(newChars) || judge2(newChars) || judge3(newChars);}private static boolean judge6() {return Arrays.deepEquals(chars1, chars2);}public static void main(String[] args) {Scanner scanner = new Scanner(System.in);num = Integer.parseInt(scanner.nextLine());chars1 = new char[num][num];chars2 = new char[num][num];for (int i = 0; i < num; i++) {char[] tempChars = scanner.nextLine().toCharArray();System.arraycopy(tempChars, 0, chars1[i], 0, num);}for (int i = 0; i < num; i++) {char[] tempChars = scanner.nextLine().toCharArray();System.arraycopy(tempChars, 0, chars2[i], 0, num);}scanner.close();if (judge1(chars1)) {System.out.println(1);} else if (judge2(chars1)) {System.out.println(2);} else if (judge3(chars1)) {System.out.println(3);} else if (judge4()) {System.out.println(4);} else if (judge5()) {System.out.println(5);} else if (judge6()) {System.out.println(6);} else {System.out.println(7);}}}總結
以上是生活随笔為你收集整理的图形的花样翻转(洛谷P1205题题解,Java语言描述)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 潜伏者与谍报密码(洛谷P1071题题解,
- 下一篇: 【操作系统】多线程与多任务的比较