顺时针输出一个二维数组的内容
来源:互联网 发布:ubuntu 显示文件列表 编辑:程序博客网 时间:2024/05/22 08:19
前几天在一道笔试题里看到的,要求输出一个二维矩阵的内容,比如,给定一个二维数组
{{1, 2, 3, 10, 17},
{4, 5, 6, 11, 18},
{7, 8, 9, 12, 19},
{13,14,15,16, 20},
{21,22,23,24, 25}}
输出必须为1 2 3 10 17 18 19 20 25 24 23 22 21 13 7 4 5 6 11 12 16 15 14 8 9,
看似简单地题目花了不少时间来做,写起来不熟练,调试了很多次,如果是笔试或者面试手写的话肯定会挂掉,所以这里重新温习一下。
public class ClockwisePrint {public static void main(String[] args) {// TODO Auto-generated method stubint [][] a = {{1, 2, 3, 4, 5},<span style="white-space:pre"></span> {4, 5, 6, 7, 8}, {7, 8, 9, 10, 6}, {27,18, 19,11, 10}, {1, 2, 3, 4, 5}, {4, 5, 6, 7, 8}, {7, 8, 9, 10, 6}, {1, 2, 3, 4, 5}, };ClockwisePrint c = new ClockwisePrint();c.colokWisePrint(a);}public void colokWisePrint(int a[][]){int width = a[0].length;int height = a.length;int startX = 0;int startY = 0;int endX = startX + height-1;int endY = startY + width -1;while(true){if(startX > endX || startY > endY)break;if(startX < endX && startY < endY){print(a, startX, startY, endX, endY);startX ++;startY ++;endX --;endY --;}if(startY <=endY && startX == endX)//说明只有一行数据,输出由左至右即可{for(int i = startY ; i <= endY ; i++){System.out.print( a[startX][i] + " ");}break;}if(startX <=endX && startY == endY){//说明只有一列数据,直接由上到下输出for(int i = startX ; i<= endX ; i++){System.out.print( a[i][startY] + " ");}break;}}}public void print(int [][] a,int startX,int startY,int endX,int endY){for(int i = startY;i<= endY ; i++){System.out.print(a[startX][i] + " " );//输出第一行数据}for(int i = startX+1 ; i <= endX ; i ++){System.out.print(a[i][endY] + " "); // 输出第一竖列数据}for(int i = endY-1 ; i >= startY ; i--){System.out.print(a[endX][i] + " ");//输出第二行数据}for(int i = endX-1 ; i >= startX+1 ; i--){System.out.print(a[i][startY] + " ");//输出最后一列数据}System.out.println();//打印换行以便层数的查看}}运行结果:
1 2 3 4 5 8 6 10 5 8 6 5 4 3 2 1 7 4 1 27 7 4
5 6 7 10 11 4 7 10 9 8 5 2 18 8
9 19 3 6
0 0
- 顺时针输出一个二维数组的内容
- 二维数组顺时针输出
- [Java Code]顺时针输出二维数组
- Java 实现顺时针螺旋二维数组输出
- 顺时针输出二维数组元素值
- 一个二维数组以顺时针螺旋的方式打印出来
- c语言:使一个N*N二维数组输出呈顺时针螺旋递增
- 数组矩阵的顺时针输出
- 输出一个二维数组
- 顺时针打印二维数组(螺旋输出数组)
- 二维数组顺时针打印
- 顺时针打印二维数组
- 编写函数将一个NxN的二维数组的周边元素“顺时针”轮转1位
- 将一个二维数组顺时针旋转90°
- 二维数组的输出
- 二维数组的输出
- 二维数组的输出
- 顺时针输出数组
- 图像中的高斯模糊
- [BZOJ1070]SCOI2007修车|费用流
- Tomcat的context.xml说明、Context标签讲解
- 常量指针和指针常量
- 内部类的总结
- 顺时针输出一个二维数组的内容
- 4月17日学习笔记-有关控件的属性修改
- Long Polling Requests, Servlet 3.0, and DeferredResult
- java基本数据类型
- Android.Http
- 机器学习中的常用分布
- Smart Client Software Factory 映射业务实体到界面元素
- SharePoint 2013 可视化工作流设计图解---如何删除邮件错误。
- Tomcat 在基于 Unix 系统上无法绑定80端口的解决方法