题目
对于一个 n 行 m 列的表格,我们可以使用螺旋的方式给表格依次填上正整数,我们称填好的表格为一个螺旋矩阵。
例如,一个 4 行 5 列的螺旋矩阵如下:
1 2 3 4 5
14 15 16 17 6
13 20 19 18 7
12 11 10 9 8
输入描述
输入两个整数 n、 m,分别表示螺旋矩阵的行数和列数。
输出描述
输出一个n行m列的螺旋矩阵。
输入样例
4 5
输出样例文章来源:https://www.toymoban.com/news/detail-665358.html
1 2 3 4 5
14 15 16 17 6
13 20 19 18 7
12 11 10 9 8
代码
#include <iostream>
using namespace std;
void Matrix(int **matrix, int matrixRowlen, int matrixColLen)
{
int left = 0, right = matrixColLen - 1;
int up = 0, down = matrixRowlen - 1;
int inx = 1;
while (left <= right && up <= down)
{
for (int i = left; i <= right; ++i)
{
matrix[up][i] = inx++;
}
up++;
if (up > down)
break;
for (int i = up; i <= down; ++i)
{
matrix[i][right] = inx++;
}
right--;
if (left > right)
break;
for (int i = right; i >= left; --i)
{
matrix[down][i] = inx++;
}
down--;
if (up > down)
break;
for (int i = down; i >= up; --i)
{
matrix[i][left] = inx++;
}
left++;
if (left > right)
break;
}
}
int main()
{
int n, m;
cin >> n >> m;
int **arr = new int *[n];
for (int i = 0; i < n; i++)
arr[i] = new int[m]{0};
Matrix(arr, n, m);
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
cout << arr[i][j] << "\t";
cout << endl;
}
return 0;
}
运行结果
文章来源地址https://www.toymoban.com/news/detail-665358.html
到了这里,关于打印螺旋矩阵C++的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!