数组4——二维数组1——将矩阵顺时针旋转90度

【定义】

二维数组也称为矩阵(Matrix),关于矩阵的算法经常在各种考试及面试中出现,它主要考查被测试者的逻辑思维能力、下标的灵活应用及对C语言的掌握程度,这种题目通常有较高的难度,通常需要二重循环实现。经典的矩阵算法有将矩阵旋转90度、魔方阵、拉丁方阵、蛇形方阵、内螺旋矩阵、外螺旋矩阵、逆螺旋矩阵。

【问题】将矩阵顺时针旋转90度

如图

数组4——二维数组1——将矩阵顺时针旋转90度_第1张图片

【分析】

这题是北京航天大学考研试题。对于任意N阶方阵,如果N是偶数,则矩阵构成N/2圈;如果N是奇数,则矩阵构成(N-1)/2。将矩阵顺时针旋转90度,就是将每圈的元素在四个方位依次轮换位置。例如,对于5×5矩阵来说,将6放在原来4的位置,4放在原来20的位置,20放在原来22的位置,22放在原来6的位置。这需要将这4个元素依次交换位置,具体交换过程

如图

数组4——二维数组1——将矩阵顺时针旋转90度_第2张图片

数组4——二维数组1——将矩阵顺时针旋转90度_第3张图片

 

从图可以看出,交换元素的公式如下图:

数组4——二维数组1——将矩阵顺时针旋转90度_第4张图片

main.cpp

#include 
using namespace std;
#include 
#define MAX 20

void main()
{
	int a[MAX][MAX], i, j, t, p = 1, n;
	cout << "请输入矩阵的阶:" << endl;
	cin >> n;
	cout << "*******旋转前的矩阵*******"<

结果:

数组4——二维数组1——将矩阵顺时针旋转90度_第5张图片

 

你可能感兴趣的:(数据结构与算法,数组,二维数组,数据结构与算法)