题目:给定一副由N*N矩阵表示的图像,其中每个像素的大小为4字节,编写一个方法,将图像旋转90度。不占用额外内存空间。
解答:先看一个例子:4*4的矩阵旋转后变成右边
从上图可以看到,最后一列变成第一行,倒数第二行变成第二列。。。
逆时针方向交换,
void Rotate(int a[][4],int n)
{
int i,j,tmp;
for(i=0;i<n/2;i++)
for(j=i;j<n-i-1;j++)
{
tmp=a[i][j];
a[i][j]=a[j][n-1-i];
a[j][n-i-1]=a[n-i-1][n-1-j];
a[n-i-1][n-1-j]=a[n-j-1][i];
a[n-j-1][i]=tmp;
}
}