z字形矩阵输出

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013554860/article/details/48252425

点击打开链接

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;
}


阅读更多
换一批

没有更多推荐了,返回首页