顺时针打印矩阵

题目描述:输入一个矩阵,按照从外向里以顺时针打印出每一个数字,例如:输入如下矩阵,则依次打印出的数字为:1、2、3、4、8、12、16、15、14、13、9、5、6、7、11、10.


思路分析:当我们顺时针打印该矩阵时,每一圈的起始位置是左上角的元素,并且每一圈左上角元素都有一个共同点:它的行和列所对应的的下标都是相同的。因此不难想到,该矩阵打印结束的条件就是左上角的元素下标走到了该矩阵行和列的一半时该矩阵也就打印结束了。因为矩阵也是用下标来确定某个数字的,所以这里就是:4>1*2

可是,我们上面给的矩阵很特殊,并且行和列的都是偶数个,不具有说服力,我们还需要考虑考虑其他的情况,以验证我们得到的结论是否具有普遍性。例如:一个7*7的矩阵,将该矩阵打印结束的条件就是:左上角的元素为(3,3)时,也就是说7>3*2

这里乘二也是因为矩阵每打印完一圈,对应的下三角部分已经打印过了。矩阵打印的大体框架我们已经做好了,现在还有一个问题,就是如何打印矩阵的每一圈


如上图,矩阵打印一圈需要四步,这个是一般情况,当我们的矩阵是行大于列、列大于行的时候可能不需要四步,就可以打印结束,如下图:


从上图不难看出,无论是一个怎样的矩阵,它都会进行第一步,并且如果打印一个矩阵它进行了第三步,那么一定走了一二步,也就是说后面的每一步是建立在前面步的基础之上的,我们总结一下打印每一圈。

(1)从左往右:肯定有;

(2)从上到下:矩阵行数至少为2,即:终止行号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值