二维数组的蛇形遍历,如下图所示:
实现代码如下:
#include <iostream>
using namespace std;
void SnakeTraversal(int m, int n, int arr[][4])
{
if (m<=1 || n<=1)
{
for (int i=0; i<m; i++)
for (int j=0; j<n; j++)
{
cout << arr[i][j] << " ";
}
cout << endl;
return;
}
int s = m + n - 2;
for (int i=0; i<=s; i++)
{
int m_m = 0;
int n_n = 0;
if (i % 2 == 0)
{
for (m_m=i; m_m>=0; m_m--)
{
n_n = i - m_m;
if (m_m >= m || n_n >= n)
continue;
cout << arr[m_m][n_n] << " ";
}
}
else
{
for (m_m = 0; m_m <= i; m_m++)
{
n_n = i - m_m;
if (m_m >= m || n_n >= n)
continue;
cout << arr[m_m][n_n] << " ";
}
}
}
cout << endl;
}
int main()
{
int arr[][4] = {1, 2, 3, 4,
5, 6, 7, 8,
9, 10, 11, 12};
//int arr[][1] = {1, 2, 3};
SnakeTraversal(3, 4, arr);
return 0;
}
二维数组的传递上不是很灵活,如有改进的好意见请指教!