AcWing 756. 蛇形矩阵
原题链接
困难
作者:
陈姥姥
,
2024-02-13 21:13:35
,
所有人可见
,
阅读 31
C++ 代码
#include <iostream>
#include <vector>
int main() {
int n, m;
std::cin >> n >> m;
std::vector<std::vector<int>> matrix(n, std::vector<int>(m));
int num = 1;
int rowStart = 0, rowEnd = n - 1;
int colStart = 0, colEnd = m - 1;
while (rowStart <= rowEnd && colStart <= colEnd) {
for (int j = colStart; j <= colEnd; j++) {
matrix[rowStart][j] = num++;
}
rowStart++;
for (int i = rowStart; i <= rowEnd; i++) {
matrix[i][colEnd] = num++;
}
colEnd--;
if (rowStart <= rowEnd) {
for (int j = colEnd; j >= colStart; j--) {
matrix[rowEnd][j] = num++;
}
rowEnd--;
}
if (colStart <= colEnd) {
for (int i = rowEnd; i >= rowStart; i--) {
matrix[i][colStart] = num++;
}
colStart++;
}
}
// 输出矩阵
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
std::cout << matrix[i][j] << " ";
}
std::cout << std::endl;
}
return 0;
}