一:顺时针旋转九十度
举例:4*3矩阵A1,旋转90度,变成3×4矩阵A2。
图1 矩阵旋转90度
算法:
m=4,n=3,i,j
for:i=0, i<n, i++
for:j=0, j<m, j++
/*从下到上,从左到右读取A1的每一个元素*/
</pre><pre name="code" class="cpp">#include<iostream>
#include<stdio.h>
using namespace std;
int main(){
int a[4][3] = {1,2,3,
4,5,6,
7,8,9,
10,11,12};
int b[3][4];
int m=4,n=3;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
b[i][j]=a[m-j-1][i];
}
}
for(int i=0;i<3;i++){
for(int j=0;j<4;j++){
printf("%d ,",b[i][j]);
}
printf("\n");
}
return 0;
}
二:逆时针旋转九十度(就是顺时针旋转270度)
从下到上,从左到右读取A1的每一个元素
#include<iostream>
#include<stdio.h>
using namespace std;
int main(){
int a[4][3] = {1,2,3,
4,5,6,
7,8,9,
10,11,12};
int b[3][4];
int m=4,n=3;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
b[i][j]=a[j][n-1-i];
}
}
for(int i=0;i<3;i++){
for(int j=0;j<4;j++){
printf("%d ,",b[i][j]);
}
printf("\n");
}
return 0;
}
三:旋转一百八十度
从下开始向左层次遍历
#include<iostream>
#include<stdio.h>
using namespace std;
//从下开始层次遍历,从做到右
int main(){
int a[4][3] = {1,2,3,
4,5,6,
7,8,9,
10,11,12};
int b[4][3];
int m=3,n=4;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
b[i][j]=a[n-i-1][m-j-1];
}
}
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
printf("%d ,",b[i][j]);
}
printf("\n");
}
return 0;
}
参考博客:http://blog.csdn.net/zhifengsun/article/details/32327455