打印螺旋矩阵C++

这篇具有很好参考价值的文章主要介绍了打印螺旋矩阵C++。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

题目

对于一个 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

输出样例

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;
}

运行结果

c++螺旋打印矩阵,问答趣题,c++,矩阵,算法文章来源地址https://www.toymoban.com/news/detail-665358.html

到了这里,关于打印螺旋矩阵C++的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 算法刷题-数组-螺旋矩阵

    力扣题目链接 给定一个正整数 n,生成一个包含 1 到 n^2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。 示例: 输入: 3 输出: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ] 这道题目可以说在面试中出现频率较高的题目, 本题并不涉及到什么算法,就是模拟过程,但却十分考察对代

    2024年02月08日
    浏览(55)
  • 【算法训练-数组 三】【数组矩阵】螺旋矩阵、旋转图像、搜索二维矩阵

    废话不多说,喊一句号子鼓励自己:程序员永不失业,程序员走向架构!本篇Blog的主题是螺旋矩阵,使用【二维数组】这个基本的数据结构来实现 二维数组的结构特性入手 根据题目示例 matrix = [[1,2,3],[4,5,6],[7,8,9]] 的对应输出 [1,2,3,6,9,8,7,4,5] 可以发现,顺时针打印矩阵的顺序

    2024年02月06日
    浏览(53)
  • 【算法题】螺旋矩阵II (求解n阶Z形矩阵)

    一、问题的提出 n 阶 Z 形矩阵的特点是按照之( Z ) 字形的方式排列元素。 n 阶 Z 形矩阵是指矩阵的大小为 n × n ,其中 n 为正整数。 一个  n   行  n   列的螺旋( Z 形)矩阵如图1所示,观察并找出填数规律。 图1  7行7列和8行8列的螺旋( Z 形)矩阵 现在给出矩阵大小  n ,请你输

    2024年02月13日
    浏览(32)
  • 算法leetcode|54. 螺旋矩阵(rust重拳出击)

    给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。 m == matrix.length n == matrix[i].length 1 = m, n = 10 -100 = matrix[i][j] = 100 面对这道算法题目,二当家的再次陷入了沉思。 可以每次循环移动一步,判断移到边界就变换方向,巧用数组可以减少逻辑判断

    2024年02月08日
    浏览(48)
  • 【算法题】螺旋矩阵 I II III IV

    目录 1. 螺旋矩阵 2. 螺旋矩阵 II 3. 螺旋矩阵 III 4. 螺旋矩阵 IV 题目描述: 给你一个m行n列的矩阵matrix,请按照顺时针螺旋顺序 ,返回矩阵中的所有元素。 提示: m == matrix.length n == matrix[i].length 1 = m, n = 10 -100 = matrix[i][j] = 100 题解: 4×5的矩阵按顺时针螺旋顺序打印如图所示。

    2024年02月15日
    浏览(44)
  • 算法leetcode|59. 螺旋矩阵 II(rust重拳出击)

    给你一个正整数 n ,生成一个包含 1 到 n 2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 1 = n = 20 面对这道算法题目,二当家的再次陷入了沉思。 可以每次循环移动一步,判断移到边界就变换方向,巧用数组可以减少逻辑判断的复杂性。 也可以每次循环

    2024年02月11日
    浏览(44)
  • 【数据结构与算法系列5】螺旋矩阵II (C++ & Python)

    给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 示例 1: 示例 2: 提示: 1 = n = 20 使用和二分法一样的思想,确定循环不变量,确定是左闭右开,还是左闭右闭合,本次使用的是左闭右开 C++ 实现: python 实现:

    2024年02月09日
    浏览(41)
  • 算法-有序数组的平方,长度最小的子数组,螺旋矩阵II

    伪装成一个老手! 题目 给你一个按 非递减顺序 排序的整数数组 nums,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。 示例 : 输入:nums = [-4,-1,0,3,10] 输出:[0,1,9,16,100] 解释:平方后,数组变为 [16,1,0,9,100] 排序后,数组变为 [0,1,9,16,100] 来源:力扣977 思路 遍

    2024年02月11日
    浏览(43)
  • XDOJ例题及答案第七更 计算整数各位数字之和简单程序奖金计算角谷定理阶乘运算阶乘之和阶梯电价计费阶梯电价计算 金字塔打印矩阵矩阵对角线求和矩阵求和累加和校验利率计算 利润计算螺旋填数马鞍点

    目录 计算整数各位数字之和 简单程序 奖金计算 角谷定理 阶乘运算 阶乘之和 阶梯电价计费 阶梯电价计算 金字塔打印 矩阵 矩阵对角线求和 矩阵求和 累加和校验 利率计算 利润计算 螺旋填数 马鞍点

    2024年02月05日
    浏览(103)
  • 算法训练第二天|977.有序数组的平方、209.长度最小的有序数组、59.螺旋矩阵2

    题目链接:力扣 思路:同样使用双指针的方法,这样就可以只遍历一次原数组。 可以考虑需要按照一个顺序来遍历,那就是从大到小或者从小到大,我选择的是从大到小。 不难看出,原数组将每个数平方后,呈现从两边到中间逐渐减小的规律。 所以使用一个指针指向原数组

    2023年04月22日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包