2013
12-13

# 九度-1171-C翻转[解题代码]

1 2 表示：90度，顺时针，翻转4个数
1 3 表示：90度，顺时针，翻转9个数
2 2 表示：90度，逆时针，翻转4个数
2 3 表示：90度，逆时针，翻转9个数

1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25
1 3 1 1

11 6 1 4 5
12 7 2 9 10
13 8 3 14 15
16 17 18 19 20
21 22 23 24 25

java 代码如下：
import java.io.BufferedReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;

public class Main {

public static void main(String[] args) throws IOException {
ArrayList<int[][]> list = new ArrayList<int[][]>();
Scanner s = new Scanner(System.in);
while(s.hasNextInt()){

int arrs[][] = new int[5][5];
for(int i=0; i<5; i++){
for(int j=0; j<5; j++){
arrs[i][j] = s.nextInt();
}
}

int a = s.nextInt();
int b = s.nextInt();

int x = s.nextInt();
int y = s.nextInt();

//			int k1[] = {0,};

if(a==1){
if(b==2){
int t = arrs[x-1][y-1];
arrs[x-1][y-1] = arrs[x][y-1];
arrs[x][y-1] = arrs[x][y];
arrs[x][y] = arrs[x-1][y];
arrs[x-1][y] = t;
}else{
int t = arrs[x-1][y-1];
arrs[x-1][y-1] = arrs[x+1][y-1];
arrs[x+1][y-1] = arrs[x+1][y+1];
arrs[x+1][y+1] = arrs[x-1][y+1];
arrs[x-1][y+1] = t;

t = arrs[x-1][y];
arrs[x-1][y] = arrs[x][y-1];
arrs[x][y-1] = arrs[x+1][y];
arrs[x+1][y] = arrs[x][y+1];
arrs[x][y+1] = t;
}

}else{
if(b==2){
int t = arrs[x-1][y];
arrs[x-1][y] = arrs[x][y];
arrs[x][y] = arrs[x][y-1];
arrs[x][y-1] = arrs[x-1][y-1];
arrs[x-1][y-1] = t;
}else{
int t = arrs[x-1][y+1];
arrs[x-1][y+1] = arrs[x+1][y+1];
arrs[x+1][y+1] = arrs[x+1][y-1];
arrs[x+1][y-1] = arrs[x-1][y-1];
arrs[x-1][y-1] = t;

t = arrs[x][y+1];
arrs[x][y+1] = arrs[x+1][y];
arrs[x+1][y] = arrs[x][y-1];
arrs[x][y-1] = arrs[x-1][y];
arrs[x-1][y] = t;
}
}

for(int i=0; i<5; i++){
for(int j=0; j<5; j++){
if(j!=4)
System.out.print(arrs[i][j]+" ");
else
System.out.print(arrs[i][j]);
}

System.out.println();
}

}

}

}
/**************************************************************
Problem: 1171
User: coder
Language: Java
Result: Accepted
Time:180 ms
Memory:17464 kb
****************************************************************/

1. 学算法中的数据结构学到一定程度会乐此不疲的，比如其中的2－3树，类似的红黑树，我甚至可以自己写个逻辑文件系统结构来。

2. 约瑟夫也用说这么长……很成熟的一个问题了，分治的方法解起来o(n)就可以了，有兴趣可以看看具体数学的第一章，关于约瑟夫问题推导出了一系列的结论，很漂亮