package 一;
import java.util.Scanner;
public class p4924魔法少女 {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int b = s.nextInt();
int[][] a = new int[b + 1][b + 1];
int c = 0;
for (int i = 1; i < b + 1; i++) {
for (int j = 1; j < b + 1; j++) {
a[i][j] = ++c;
}
}//创建二维数组对数组赋值。
//存储操作指令。
int[][] cz = new int[s.nextInt()][4];
for (int i = 0; i < cz.length; i++) {
for (int j = 0; j < 4; j++) {
cz[i][j] = s.nextInt();
}
}
//这个需要注意给的坐标不是从零开始的。
int[][] d = new int[500][500];
for (int i = 0; i < cz.length; i++) {
int f = cz[i][2] * 2 + 1;
for (int k = cz[i][0]- cz[i][2],x = 0; x < f; k++,x++) {
for (int j = cz[i][1] - cz[i][2], y = 0; y < f; j++,y++) {
d[x][y] = a[k][j];
}
}
//这里是来把数据提取出来。
//找一个什么样的关系将这些数据对应上嘞
if (cz[i][3] == 0){//顺时针旋转
for (int k = cz[i][0]- cz[i][2],y = 0; y < f; k++,y++) {
for (int j = cz[i][1] - cz[i][2],x = f - 1; x >= 0; j++,x--) {
a[k][j] = d[x][y];
}
}
}//这里是读取数组的x 和 y改变,这就需要考虑好他们的对应关系。
else {//逆时针旋转
for (int k = cz[i][0]- cz[i][2],y = f - 1; y >= 0; k++,y--) {
for (int j = cz[i][1] - cz[i][2],x = 0; x < f; j++,x++) {
a[k][j] = d[x][y];
}
}
}
}
for (int i = 1; i < b + 1; i++) {
for (int j = 1; j < b + 1; j++) {
System.out.print(a[i][j] + " ");
System.out.println();
}
}
}
借鉴其他同学方法,方法比较好理解,我感觉收获大的