我是靠谱客的博主 健忘白云,最近开发中收集的这篇文章主要介绍2020-11-2 之字形打印矩阵,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

题目描述

给定一个矩阵matrix,按照“之”字形的方式打印这个矩阵,如样例所示。

输入描述:

输入包含多行,第一行包含两个整数n和m(1<=n, m <=200),代表矩阵的行数和列数,接下来n行,每行m个整数,代表矩阵matrix(1≤matrix[i][j]≤40000)。

输出描述:

输出一行 ,代表“之”字形输出的矩阵。

示例1

输入

复制

4 4
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16

输出

复制

1 2 5 9 6 3 4 7 10 13 14 11 8 12 15 16

备注:

额外空间复杂度O(1)。

 

#include <bits/stdc++.h>
using namespace std;



void printLevel(vector<vector<int>>& m, int startRow, int startCol, int endRow, int endCol, bool flag) {
		if (flag) {
			while (startRow <= endRow) {
				cout << m[startRow ++][startCol --] << " ";
			}
		} else {
			while (endRow >= startRow) {
				cout << m[endRow --][endCol ++] << " ";
			}
		}
	}



int main() {
    int n, m;
    while(cin >> n >> m) {
        vector<vector<int>> matrix(n, vector<int>(m, 0));
        for(int i = 0; i < n; i ++) {
            for(int j = 0; j < m; j ++) {
                cin >> matrix[i][j];
            }
        }
        int startRow = 0, startCol = 0; 
        int endRow = 0, endCol = 0;      
        int maxRow = n - 1, maxCol = m - 1;
        bool flag = false;                
        while(startRow != maxRow + 1) {
            printLevel(matrix, startRow, startCol, endRow, endCol, flag);
            startRow = startCol == maxCol ? startRow + 1 : startRow;
            startCol = startCol == maxCol ? startCol : startCol + 1;
            endCol = endRow == maxRow ? endCol + 1 : endCol;
            endRow = endRow == maxRow ? endRow : endRow + 1; 
            flag = !flag;
        }
    }
    return 0;
}

 

最后

以上就是健忘白云为你收集整理的2020-11-2 之字形打印矩阵的全部内容,希望文章能够帮你解决2020-11-2 之字形打印矩阵所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(65)

评论列表共有 0 条评论

立即
投稿
返回
顶部