USACO题解源代码
package Karl.Water;/*LANG: JAVATASK: transform*/import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;public class transform {public static void Reflection(char[][] a,int n){char k;int i,j;for(j=0;j<n;j++){for(i=0;i<n/2;i++){k = a[j][i];a[j][i] = a[j][n-1-i];a[j][n-1-i] = k;}}}public static void rotate(char a[][],int N){ int layer; for(layer=0; layer<N/2; layer++) { int first = layer; int last = N-1-layer; int i; for(i=layer; i<last; i++) { int offset = i-layer; char top = a[first][i]; a[first][i] = a[last-offset][first]; a[last-offset][first] = a[last][last-offset]; a[last][last-offset] = a[i][last]; a[i][last] = top; } }}public static boolean judge(char[][] a,char[][] b,int n){for(int i=0;i<n;i++){for(int j=0;j<n;j++){if(a[i][j]!=b[i][j]){return false;}}}return true;}public static void main(String[] args) throws NumberFormatException, IOException {BufferedReader br = new BufferedReader(new FileReader("transform.in"));PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("transform.out")));char[][] a = new char[1000][1000];char[][] b = new char[1000][1000];char[][] c = new char[1000][1000];int n = Integer.parseInt(br.readLine());String s = new String();int i,j,k=0;for(i=0;i<n;i++){s = br.readLine();for(j=0;j<n;j++){a[i][j] = s.charAt(j);c[i][j] = s.charAt(j);}}for(i=0;i<n;i++){s = br.readLine();for(j=0;j<n;j++){b[i][j] = s.charAt(j);}}for(int p=0;p<4;p++){transform.rotate(a, n);if(transform.judge(a, b, n)){k++;if(p==3) out.println(6);else{out.println(p+1);break;}}}if(k<1){transform.Reflection(a, n);if(transform.judge(a, b, n)){k++;out.println(4);}}if(k!=1&&k!=2){for(int p=0;p<3;p++){transform.rotate(a, n);if(transform.judge(a, b, n)){k++;out.println(5);}}}if(k==0){out.println(7);}out.close();System.exit(0);}}