Question:
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?
Solution:
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?
Solution:
#include <iostream> using namespace std; void rotate90(int **array, int N){ for(int i=0;i<N/2;++i){ for(int j=i;j<N-1-i;++j){ int t1=array[j][N-1-i]; array[j][N-1-i] = array[i][j]; int t2=array[N-1-i][N-1-j]; array[N-1-i][N-1-j] = t1; t1 = array[N-1-j][i]; array[N-1-j][i] = t2; array[i][j] = t1; } } } int main() { int **matrix; matrix = new int*[5]; for(int i=0;i<5;++i) matrix[i] = new int[5]; int count=0; for(int i=0;i<5;++i) for(int j=0;j<5;++j){ matrix[i][j] = count++; } for(int i=0;i<5;++i){ for(int j=0;j<5;++j){ cout<<matrix[i][j]<<" "; } cout<<endl; } cout<<"----------------"<<endl; rotate90(matrix,5); for(int i=0;i<5;++i){ for(int j=0;j<5;++j){ cout<<matrix[i][j]<<" "; } cout<<endl; } //release memory for(int i=0;i<5;++i){ delete[] matrix[i]; } delete[] matrix; cout << "" << endl; // prints return 0; }
No comments:
Post a Comment