ulvis.paste.net

Paste Search Dynamic
Recent pastes
rotatehelper
  1. #include <iostream>
  2. #include <cmath>
  3. using namespace std;
  4. #define R 4
  5. #define C 4
  6.  
  7. void print(int mat[R][C]){
  8.         for(int i=0;i<R;i++){
  9.                 for(int j=0;j<C;j++){
  10.                         cout<<mat[i][j]<<" ";
  11.                 }
  12.                 cout<<endl;
  13.         }
  14.         cout<<endl<<endl;
  15.        
  16. }
  17.  
  18. void rotatehelper(int mat[R][C],int rstart,int rend,int cstart,int cend){
  19.         if(cstart>cend || rstart>rend)
  20.                 return;
  21.         int i=cstart;
  22.         int a=cstart;
  23.         int j=rstart;
  24.         int k=cend;
  25.         int l=rend;
  26.         while(i<rend && j<cend && k>cstart && l>rstart && a<cend){
  27.         int temp1=mat[rstart][j];
  28.         int temp2=mat[i][cend];
  29.         mat[i][cend]=temp1;
  30.         i++;
  31.         j++;
  32.          temp1=mat[rend][k];
  33.         mat[rend][k]=temp2;
  34.         k--;
  35.         temp2=mat[l][cstart];
  36.         mat[l][cstart]=temp1;
  37.         l--;
  38.         mat[rstart][a]=temp2;
  39.         a++;}
  40.         rotatehelper(mat,rstart+1,rend-1,cstart+1,cend-1);
  41.        
  42. }
  43.  
  44. void rotate(int mat[R][C]){
  45.         int rstart=0,rend=(R-1);
  46.         int cstart=0,cend=(C-1);
  47.        
  48.         rotatehelper(mat,rstart,rend,cstart,cend);
  49.        
  50. }
  51.        
  52.  
  53.  
  54.  
  55.  
  56. int main() {
  57.         int mat[R][C]={{1,2,3,4},
  58.                                         {5,6,7,8},
  59.                                         {9,10,11,12},
  60.                                         {13,14,15,16}
  61.                                         };
  62.         print(mat);
  63.         rotate(mat);
  64.         print(mat);
  65.         return 0;
  66. }
Parsed in 0.008 seconds