每日练习6-输入一个矩阵,按照从外圈向内圈顺时针打印数组元素

题目:

        输入一个矩阵,按照从外圈向内圈顺时针打印数组元素。例如输入二维数组 a[3][3] = { {1,3,4}, {5,6,7}, {8,2,0}},打印出来的结果应该是:1 3 4 7 0 2 8 5 6

解决思路:

(1)首先,本文实现的顺时针打印,起始位置是矩阵的左上角,即数组的 【0】【0】位置;

(2)一个圈顺时针打印一遍,要分四个方向打印:从左到右、从上到下、从右到左、从下到上;

(3)每一个方向打印完,要有结束位置,且不能有重复位置的打印,比如当前列最大值为3,从左到右打印到【0】【2】时,这个方向已经打印结束。接下来是从上到下的方向,但此时【0】【2】已经打印过了,所以行值要加1,即从【1】【2】开始打印。类似这样,每个方向都要注意这一点;

(4)一圈打印完,去到第二个圈的起始位置时,我们分析发现:当前圈的起始位置就是上一个圈的起始位置的行列都加1;

(5)同时,一圈打印结束,我们当前最外圈的元素已经输出了。为避免重复,我们下一圈的起始位置可以限制下一圈的从右到左和从下向上方向的结束条件;那我们的行值需要减1,列值需要减1,即得到当前圈行、列值得最大值,以此控制另外两个方向的结束条件。

实现代码:


                
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值