1 2 3
4 5 6 ---> 1 2 3 6 9 8 7 4 5
7 8 9
void print_matrix(int a[], int m, int n)
{
//matrix a with size m n
std::vector<int> x;
int point1 = 0;
int point2 = n - 1;
int point3 = m*n - 1;
int point4 = m*n - n;
while (point1<=point2 && point2<=point3 && point3>=point4 && point4>=point1)
{
for (int i = point1; i < point2; i++){
x.push_back(a[i]);
}
for (int i = point2; i < point3; i += n){
x.push_back(a[i]);
}
for (int i = point3; i > point4; i--){
x.push_back(a[i]);
}
for (int i = point4; i > point1; i -= n){
x.push_back(a[i]);
}
if (point1 == point2 && point3 == point4 && point1==point3){
x.push_back(a[point1]);
}
point1 += (n + 1);
point2 += (n - 1);
point3 -= (n + 1);
point4 -= (n - 1);
}//while
for (auto i : x){
std::cout << i << " ";
}
}