C++实现蛇形矩阵
实现下图形式的蛇形矩阵
bool flag = 0; //0表示左下方向, 1表示右上方向
int i = 0, j = 0;
int k = 1;
while (k <= n*n)
{
R2[i][j] = k;
if (!flag) //如果当前向左下走
{
if ( j == 0) //到左边界
{
i++; //垂直向下走一格
flag = 1; //转向,向右上走
}
else
{
if (i == n - 1) //到下边界
{
j++; //水平向右走一格
flag = 1; //转向,向右上走
}
else
{
j--; i++; //没有到边界,继续向左下走
}
}
}
else //如果当前向右上走
{
if ( i == 0 && j != n-1) //到上边界,注意如果到右上角,则算为右边界。
{
j++; //水平向右走一格
flag = 0; //转向,向左下走
}
else
{
if (j == n - 1) //到右边界
{
i++; //垂直向下走一格
flag = 0; //转向,向左下走
}
else //没有到边界位置
{
i--; j++;
}
}
}
k++;
}