Veggie 最近深深地迷恋上了 Matrix,现在他手上有一个 N \times N 的矩阵,矩阵中的元素都是数字,他希望可以从不同角度欣赏矩阵之美。但是 Veggie 道行尚浅,只能请求好友 SLF 帮他完成对矩阵的变换,矩阵的变换法则如下:
法则 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:矩阵的中央元素不变,将其他元素与 "以中央元素为中心对称的元素" 互换,例如:
1 2 3 9 8 7
4 5 6 → 6 5 4
7 8 9 3 2 1
不料 SLF 二话不说把这个差事安排给了你,现在请你编程帮 Veggie 完成矩阵的变换。
输入
第一行输入正整数 N \ (1 \leq N \leq 25),和 M \ (0 \leq M \leq 20) 中间以空格隔开,其中 N 如题目且保证是一个奇数,M 表示矩阵变换的次数。
接下来 N 行,每行输入 N 个在 int 类型范围内的整数,中间以空格隔开,表示矩阵的各元素。
最后 M 行,每行输入一个整数 t \ (1 \leq t \leq 3),表示要进行变换的法则编号。
输出
输出每次变换后的矩阵,每次输出完需要多打印一个空行(详情可以参照输出样例 1)。
注意:每输入一个变换法则编号,视为一次变换。
样例
标准输入 复制文本 |
3 2 1 2 3 4 5 6 7 8 9 2 3 |
标准输出 复制文本 |
3 6 9 2 5 8 1 4 7 7 4 1 8 5 2 9 6 3 |
来源
2019 软件学院 AK 杯程序设计竞赛