顺时针打印矩阵
略
题目:输入一个矩阵,按照顺时针打印矩阵内容,例如矩阵为:
01 02 03 04
05 06 07 08
09 10 11 12
13 14 15 16
打印结果为1,2,3,4,8,12,16,15,14,13,9,5
分析
简化分解问题,顺时针打印需要先输出第一排1,2,3,4,然后再打印8,12,16,接着是15,14,13,最后是9,5.
先说第一步,第一排打印的数据至少有一个,除非数组为空,因为数组至少有一行.
再说第二步,第二步是竖着打印最后一排数据如8,12,16.它有一个前提条件,就是该数组至少有两行,如果只有一行那就不存在竖着打印.
再说第三步,第三步是倒着打印最后一排数据如15,14,13,它也有个先决条件,就是数组的行数和列数都需要大于2,然后从最后一行,最后一列的前个数开始向左开始遍历数组,一直到最后一行,第一列的位置为止.
最后是第四步,打印9,5,同样第四步需要条件才能执行,它需要行数要大于等于3行,列数要大于等于2,然后从第一列,倒数第二行开始向上遍历数组,一直到正数第二行结束为止.
代码实现
代码如下:
1 | public class DoIt { |
总结
使用绘图可以帮助思考问题,考虑问题也全面一些.