题解 | #"之"字形打印矩阵#

"之"字形打印矩阵

http://www.nowcoder.com/practice/d2efe600e73d47a2ba1533dc926cbb46

思路:打印一条斜线时行列下标和为定值。使用标志位记录是向上打印还是向下打印,每次打印完取反即可。注意打印的起点和终点要在数组的范围内,向下打印终点最大 为n-1,向上打印终点最小为0,不能越界。

#include <iostream>
#include <vector>
using namespace std;
int main(){
    int m,n,len;
    cin>>n;
    cin>>m;
    bool flag=false;
    vector<vector<int>> nums(n,vector<int>(m));
    for(int i=0;i<n;++i)
        for(int j=0;j<m;++j)
            cin>>nums[i][j];
    for(int i=0;i<m+n-1;++i){
        if(flag){
            len=min(i,n-1);
            for(int j=max(0,i-m+1);j<=len;++j)
                cout<<nums[j][i-j]<<" ";
            flag=false;
        }
        else{
            len=max(0,i-m+1);
            for(int j=min(n-1,i);j>=len;--j)
                cout<<nums[j][i-j]<<" ";
            flag=true;
        }
    }
}
全部评论

相关推荐

点赞 1 评论
分享
牛客网
牛客企业服务