概述
题目描述
给定一个矩阵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 之字形打印矩阵所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复