#include <iostream>
using namespace std;
void print(int arr[][5], int n, int m)
{
for (int i = 0; i <= n; i++)
{
for (int j = 0; j <= m; j++)
{
cout << arr[i][j] << " ";
}
cout << endl;
}
}
void print(int arr[][5],int tR,int tC,int dR,int dC,bool flag)
{
if (flag)
{
while (tR!=dR+1)
{
cout << arr[tR++][tC--]<<" ";
}
}
else{
while (dR!=tR-1)
{
cout << arr[dR--][dC++]<<" ";
}
}
}
void printlevel(int arr[][5],int n,int m)
{
if (arr == NULL)
{
return;
}
bool flag = false;
int tR = 0;
int tC = 0;
int dR = 0;
int dC = 0;
int endR = n ;//2
int endC = m;//4
cout << endR << " " << endC << endl;
while (tR!=endR+1)
{
print(arr,tR,tC,dR,dC,flag);
tR = tC == endC? tR + 1 : tR;
tC = tC == endC ? tC : tC + 1;
dC = dR == endR? dC+1 : dC;
dR = dR == endR ? dR : dR + 1;
flag = !flag;
}
cout << endl;
}
int main()
{
int arr[3][5] = { { 1, 2, 3, 4, 5 }, { 6, 7, 8, 9, 10 }, { 11, 12, 13, 14, 15 } };
int n = sizeof(arr) / sizeof(arr[0])-1;
int m = sizeof(arr[0]) / sizeof(arr[0][0])-1;
print(arr,n,m);
printlevel(arr,n,m);
system("pause");
return 0;
}