现在的位置: 首页 > 综合 > 正文

把矩阵顺时针旋转90度

2013年08月17日 ⁄ 综合 ⁄ 共 926字 ⁄ 字号 评论关闭

数据结构分析:矩阵的存储要用到二维数组,但是要考虑到存储转换后的矩阵,由于行和列不可等相等,所以必须定义两个二维数组分别存储。

题目分析:关键在于行列的转换,首先原矩阵的行变换为转换为转换后的列,原矩阵的列转换为转换后的行,需要旋转90度,所以原来的行转换为列后的值应该为MAC_ROW - row  - 1, MAC_ROW 为原矩阵的总行数,row为当前要转换的元素所在的行,由于row从0开始,所以要再减去1。

#include <iostream>

#define MAC_ROW 3
#define MAC_COL 4

using namespace std;
int main()
{
//define original matrix and 
set default value 0
int OriMatrix[MAC_ROW][MAC_COL] = 
{0};
//define converted matirx
int 
ConvMatrix[MAC_COL][MAC_ROW] = {0};

int elem = 0;
//initial
int row = 0;
for(; row < MAC_ROW; row++)
{
for(int col = 0; col < MAC_COL; col++)
{
cin>>elem;
OriMatrix[row][col] = elem;
ConvMatrix[col][MAC_ROW - row - 1] = OriMatrix[row][col];
}
}

//cout original matrix
row = 0;
cout<<"original 
matrix:"<<endl;
for(; row < MAC_ROW; row++)
{
for(int col = 0; col < MAC_COL; col++)
{
cout<<OriMatrix[row][col]<<"\t";
}
cout<<endl;
}

//cout converted matrix
cout<<"converted matrix:"<<endl;
row = 0;
for(; row < MAC_COL; row++)
{
for(int col = 0; col < MAC_ROW; col++)
{
cout<<ConvMatrix[row][col]<<"\t";
}
cout<<endl;
}

system("pause");
return 1;
}

抱歉!评论已关闭.