编写一个m×n阶螺旋矩阵的C++代码
发布时间
阅读量:
阅读量
写在前面
近期虽有些懈怠,但撰写博客这一行为仍需持续推进。现将此前参赛期间所编写的代码进行归纳整理,一则有助于自我巩固知识,二则亦可为阅读本博客的您提供一些算法方面的启发。若在代码中发现任何问题,敬请通过私信方式与我联系,共同探讨学习。
问题描述
生成一个 m*n 尺寸的螺旋排列矩阵
例如,当尺寸为 4*5 时,所形成的螺旋矩阵如下所示:
1 2 3 4 5
14 15 16 17 6
13 20 19 18 7
12 11 10 9 8
输入
4 5
小标题
1 2 3 4 5
14 15 16 17 6
13 20 19 18 7
12 11 10 9 8
算法思路
- 将矩阵分解为若干子问题进行处理,首先对第一行的元素进行赋值。可以观察到,在后续的模拟过程中(例如先向下赋值,再向左赋值),所赋的元素始终相同。同样地,在之后的向上或向下赋值操作中,所涉及的元素数量也保持一致。
举个例子说明:
在完成第一行 1 2 3 4 5 的赋值后,接下来对 6 7 8 和 9 10 11 12 进行赋值时,分别涉及了4-1个和5-1个元素。同理,在后续步骤中对13 14 和对15 16 17 进行赋值时,所涉及的元素数量分别为4-2个和5-2个。
按照这一规律不断递归执行,当s
全部评论 (0)
还没有任何评论哟~
