// C++ program for left rotation of matrix by 90
// degree wuthout using extra space
#include<bits/stdc++.h>
using namespace std;
#define R 4
#define C 4
// After transpose we swap elements of column
// one by one for finding left rotation of matrix
// by 90 degree
void reverseColumns(int arr[R][C])
{
for (int i=0; i<C; i++)
for (int j=0, k=C-1; j<k; j++,k--)
swap(arr[j][i], arr[k][i]);
}
// Function for do transpose of matrix
void transpose(int arr[R][C])
{
for (int i=0; i<R; i++)
for (int j=i; j<C; j++)
swap(arr[i][j], arr[j][i]);
}
// Function for print matrix
void printMatrix(int arr[R][C])
{
for (int i=0; i<R; i++)
{
for (int j=0; j<C; j++)
cout << arr[i][j] << " ";
cout<<'\n';
}
}
// Function to anticlockwise rotate matrix
// by 90 degree
void rotate90(int arr[R][C])
{
transpose(arr);
reverseColumns(arr);
}
//Driven code
int main()
{
int arr[R][C]= { {1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12},
{13, 14, 15, 16}
};
rotate90(arr);
printMatrix(arr);
return 0;
}
Ly8gQysrIHByb2dyYW0gZm9yIGxlZnQgcm90YXRpb24gb2YgbWF0cml4IGJ5IDkwCi8vIGRlZ3JlZSB3dXRob3V0IHVzaW5nIGV4dHJhIHNwYWNlCiNpbmNsdWRlPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgUiA0CiNkZWZpbmUgQyA0CiAKLy8gQWZ0ZXIgdHJhbnNwb3NlIHdlIHN3YXAgZWxlbWVudHMgb2YgY29sdW1uCi8vIG9uZSBieSBvbmUgZm9yIGZpbmRpbmcgbGVmdCByb3RhdGlvbiBvZiBtYXRyaXgKLy8gYnkgOTAgZGVncmVlCnZvaWQgcmV2ZXJzZUNvbHVtbnMoaW50IGFycltSXVtDXSkKewogICAgZm9yIChpbnQgaT0wOyBpPEM7IGkrKykKICAgICAgICBmb3IgKGludCBqPTAsICBrPUMtMTsgajxrOyBqKyssay0tKQogICAgICAgICAgICBzd2FwKGFycltqXVtpXSwgYXJyW2tdW2ldKTsKfQogCiAKLy8gRnVuY3Rpb24gZm9yIGRvIHRyYW5zcG9zZSBvZiBtYXRyaXgKdm9pZCB0cmFuc3Bvc2UoaW50IGFycltSXVtDXSkKewogICAgZm9yIChpbnQgaT0wOyBpPFI7IGkrKykKICAgICAgICBmb3IgKGludCBqPWk7IGo8QzsgaisrKQogICAgICAgICAgICBzd2FwKGFycltpXVtqXSwgYXJyW2pdW2ldKTsKfQogCi8vIEZ1bmN0aW9uIGZvciBwcmludCBtYXRyaXgKdm9pZCBwcmludE1hdHJpeChpbnQgYXJyW1JdW0NdKQp7CiAgICBmb3IgKGludCBpPTA7IGk8UjsgaSsrKQogICAgewogICAgICAgIGZvciAoaW50IGo9MDsgajxDOyBqKyspCiAgICAgICAgICAgIGNvdXQgPDwgYXJyW2ldW2pdIDw8ICIgIjsKICAgICAgICBjb3V0PDwnXG4nOwogICAgfQp9CiAKLy8gRnVuY3Rpb24gdG8gYW50aWNsb2Nrd2lzZSByb3RhdGUgbWF0cml4Ci8vIGJ5IDkwIGRlZ3JlZQp2b2lkIHJvdGF0ZTkwKGludCBhcnJbUl1bQ10pCnsKICAgIHRyYW5zcG9zZShhcnIpOwogICAgcmV2ZXJzZUNvbHVtbnMoYXJyKTsKfQogCi8vRHJpdmVuIGNvZGUKaW50IG1haW4oKQp7CiAgICBpbnQgYXJyW1JdW0NdPSB7IHsxLCAyLCAzLCA0fSwKICAgICAgICB7NSwgNiwgNywgOH0sCiAgICAgICAgezksIDEwLCAxMSwgMTJ9LAogICAgICAgIHsxMywgMTQsIDE1LCAxNn0KICAgIH07CiAgICByb3RhdGU5MChhcnIpOwogICAgcHJpbnRNYXRyaXgoYXJyKTsKICAgIHJldHVybiAwOwp9