之字形(Zigzag)遍历/打印/提取矩阵元素算法

题目:

输入一个M*N的矩阵,按之字形将矩阵元素提取/打印出来。

之字形(Zigzag)遍历/打印/提取矩阵元素算法_第1张图片

分析:

容易知道,对角线方向的行数(如<1,2>、<5,4,3>)为M+N,由于元素在对角线方向的奇数行和偶数行增大的方向正好相反,可由此入手,用一个变量s(0

代码:

#include 
using namespace std;
int main(int argc, char const *argv[])
{
    int i=0,j=0,s=0,m,n,k=0;//s为斜线数目 
    cin>>m>>n;
    int a[m][n]={0};
    for(s=0;s1;s++){
        /*奇数行*/  
        if((i+j)%2==0){
            while(i0)
                a[i++][j--]=k++;
            if(i==m){//向右移动  
                j+=2;
                i=m-1;
            }
            else if(j<0)
                j=0;//向下移动  

        }
        /*偶数行*/
        else{
            while(j=0)
                a[i--][j++]=k++;
            if(j==n){
                i+=2;//向下移动  
                j=n-1;
            }
            else if(i<0)
                i=0;//向右 
        }
    }
    for(i=0;ifor(j=0;jcout<'\t';  
        cout<return 0;
}

你可能感兴趣的:(算法,算法,zigzag,面试)