顺时针打印矩阵
2015-06-23 10:59
176 查看
分析:
特殊情况处理
代码:
package arrays20; public class Demo01 { public static void ClockwisePrintMatrix(int[][] arrays,int columns,int rows){ if(arrays==null || columns<=0 || rows<=0){ return; } int start = 0; while(columns>start*2 && rows>start*2){ CirclePrintMatrix(arrays,columns,rows,start); start++; } } public static void CirclePrintMatrix(int[][] arrays,int columns,int rows,int start){ int endX = columns-1-start; int endY = rows-1-start; //从左到右打印一行 for (int i = start; i <= endX; i++) { int number = arrays[start][i]; System.out.print(number+" "); } //从上到下打印一行 if(start<endY){ for (int i = start+1; i <= endY; i++) { int number = arrays[i][endX]; System.out.print(number+" "); } } //从右到左打印一行 if (start<endX && start<endY) { for (int i = endX-1; i >= start; i--) { int number = arrays[endY][i]; System.out.print(number+" "); } } //从下到上打印一行(至少三行两列) if (start<endX && start<endY-1) { for (int i = endY-1; i >= start+1; i--) { int number = arrays[i][start]; System.out.print(number+" "); } } } public static void main(String[] args) { int[][] arrays = { {1,2,3,4}, {5,6,7,8}, {9,10,11,12}, {13,14,15,16} }; //System.out.println(arrays.length+","+arrays[0].length); // 列 行 ClockwisePrintMatrix(arrays,arrays[0].length,arrays.length); } }
运行结果:
1 2 3 4 8 12 16 15 14 13 9 5 6 7 11 10
相关文章推荐
- 为webapp应用制定IOS,Android桌面快捷图标
- 大道至简阅读笔记二
- KVC 与 KVO的概念理解
- char与varchar
- 简单理解socket
- 加载音频Audio
- Largest Number
- 事务
- python的requests初步使用
- Apache Jakarta 项目介绍
- Universal-Image-Loader加载listView中图片
- .NET Framework version 4.0 SP1
- 去掉H5中number输入框的上下箭头
- C#读取word模版并对指定域写入数据保存为新word
- 算法练习-- C# DFS 全排列算法
- opencv中的HoG cascadede
- OGG常见问题处理
- iOS 开发学习35 本地化
- BZOJ 1150 CTSC2007 数据备份Backup 堆+贪心
- ORACLE日期格式