/*Given an image represented by an NxN matrix, where each pixel in the image is 4 bytes, write a method to rotate the image by 90 degrees.
Can you do this in place?*/
/*
1 2 3 4 1 5 9 13 4 8 12 16
5 6 7 8 2 6 10 14 3 7 11 15
9 10 11 12 --> 3 7 11 15 --> 2 6 10 14
13 14 15 16 4 8 12 16 1 5 9 13
*/
/*1. Swap the element of the two side of diagonal
2. Swap the element of the ith row and the (n-1-i)th row*/
#include <iostream>
using namespace std;
void swap(int &a, int &b) {
int temp = a;
a = b;
b = temp;
}
void transpose(int a[][4], int n) {
for(int i=0; i<n; ++i)
for(int j=i+1; j<n; ++j)
swap(a[i][j], a[j][i]);
for(int i=0; i<n/2; ++i)
for(int j=0; j<n; ++j)
swap(a[i][j], a[n-1-i][j]);
}
int main() {
int a[4][4] = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9,10,11,12},
{13,14,15,16}
};
for(int i=0; i<4; ++i) {
for(int j=0; j<4; ++j)
cout << a[i][j] << " ";
cout << endl;
}
cout << endl;
transpose(a, 4);
for(int i=0; i<4; ++i) {
for(int j=0; j<4; ++j)
cout << a[i][j] << " ";
cout << endl;
}
return 0;
}
Q1.6
最新推荐文章于 2021-05-15 10:18:56 发布