1.左下方向因无法继续直行需要变向时,要先判断是否能往下走,若不能往下走再往右走;
2.右上方向因无法继续直行需要变向时,要先判断是否能往右走,若不能往右走再往下走
#include<stdio.h>
#include<stdlib.h>
#include<stdlib.h>
using namespace std;
int Direction,Arr[505][505];///1,2,3,4,分别表示右,下,左下,右上。
int main()
{
int n=0,i=0,j=0;
scanf("%d",&n);
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&Arr[i][j]);
}
}
int x=0,y=0;
printf("%d ",Arr[x][y]);
Direction=1;
while(x!=(n-1)||y!=(n-1))
{
if(Direction==1&&y<n-1)///向右
{
y++;
printf("%d ",Arr[x][y]);
Direction=3;
}
if(Direction==2&&x<n-1)///向下
{
x++;
printf("%d ",Arr[x][y]);
Direction=4;
}
if(Direction==3)///左下
{
while(y>0&&x<n-1)
{
x++;y--;
printf("%d ",Arr[x][y]);
}
if(y!=0)///能走下面
{
Direction=2;
}
else
Direction=1;///走右
}
if(Direction==4)///右上
{
while(x>0&&y<n-1)
{
x--;y++;
printf("%d ",Arr[x][y]);
}
if(x!=0)///走右面
{
Direction=1;
}
else
Direction=2;///走下面
}
}
return 0;
}