1.矩阵的旋转:
矩阵的逆时针旋转基本有四种情况:
- 0度
- 90度
- 180度
- 270度,相当于顺向的90度
90度旋转:
- 列号变为行号
- (n - 行号 - 1)变成列号
- 规律: a[i][j] = b[j][n - i - 1]
180度旋转:
- (n - 行号 -1)变为行号
- (m- 列号 + 1)变为列号
- 规律:a[i][j] = b[n - i - 1][m - j - 1]
270度旋转(相当于逆时针旋转90度):
- 行号变为列号
- (m - 列号 + 1)变为行号
- 规律:a[i][j] = b[m - j -1][i]
ACM例题:[2744]
题目描述
X终于开始玩一些比较高大上的东西了,比如矩阵。给出两个N*N的矩阵A,B。他想知道矩阵A在顺时针旋转一定角度后是否会和矩阵B完全一样。
输入
有多组输入。
每组输入先输入一个整数N(N <= 50),代表矩阵的大小。
接下来的N行,每行有N个整数。代表矩阵A。
再接下来的N行N个整数代表矩阵B。
输出
如果矩阵A在旋转一定角度后能和矩阵B完全一样则输出YES,否则输出NO。
示例输入
2
1 2
3 4
3 1
4 2
2
1 2
3 4
4 2
3 1
示例输出
YES
NO
代码:
2.字母矩阵:
先给出一道例题:
ACM例题:[2254]
题目描述
给定两个整数M,N,生成一个M*N的矩阵,矩阵中元素取值为A至Z的26个字母中的一个,A在左上角,其余各数按顺时针方向旋转前进,依次递增放置,当超过26时又从A开始填充。例如,当M=5,N=8时,矩阵中的内容如下:
A B C D E F G H
V W X Y Z A B I
U J K L M N C J
T I H G F E D K
S R Q P O N M L
输入
M为行数,N为列数,其中M,N都为大于0的整数。
输出
分行输出相应的结果,注意每行开始有1个空格,相邻两个字母之间有1个空格。
示例输入
4 9
示例输出
A B C D E F G H I
V W X Y Z A B C J
U J I H G F E D K
T S R Q P O N M L
代码:
规律:从代码中我们不难看出只要利用好顺时针循环的规律便可以成功打印出字母矩阵。
原博主:http://blog.csdn.net/daijingxin/article/details/51991984