博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
打印蛇形矩阵
阅读量:5159 次
发布时间:2019-06-13

本文共 1783 字,大约阅读时间需要 5 分钟。

问题描述:给定一个整数矩阵,将该整数矩阵顺时针打印出来,

            例如矩阵为    1   2   3   4

                              5   6   7   8

                              9  10  11 12

                            13  14  15 16

            则顺时针输出为:1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10

分析:这道题其实没有涉及到复杂的算法和数据结构问题,也没有简单的方法来做,只能画图找出每次循环的边界来控制,

        通过画图可以看出圈开始的第一元素可以作为我们的基准元素,确定了这个元素也就好办了。可以得出规律,每次的

        基准元素位置都是上一个基准元素的位置两个下标均加上1,即可,循环的执行条件就是要求行数和列数都大于基准

        元素下标的两倍。

        具体的Java代码如下,写法比较通用,读者可以很容易转换为其他语言实现。

1 public class Main { 2     public static void orderprint(int a[][]){ 3         if(a==null){ 4             System.out.println("数组不存在"); 5             return ; 6         } 7         int row=a.length,column=a[0].length; 8         if(row==0 || column==0){ 9             System.out.println("数组为空数组");10             return ;11         }12         int startx=0,starty=0,endx,endy;13         int i,j;14         while(row>starty*2 && column>startx*2)15         {   16             endx=column-1-startx;                      //计算出每圈的列边界17             endy=row-1-starty;                         //计算出每圈的行边界18             for(j=startx;j<=endx;j++)                  //上部从左到右打印19                 System.out.print(a[starty][j]+",");20             for(i=starty+1;i<=endy;i++)                //右部从上到下打印21                 System.out.print(a[i][endx]+",");22             for(j=endx-1;j>=startx;j--)                //下部从右到左打印23                 System.out.print(a[endy][j]+",");24             for(i=endy-1;i>starty;i--)                 //左部从下到上打印25                 System.out.print(a[i][startx]+",");26             startx++;starty++;                         //改变每圈第一数的位置27         }28     }29     public static void main(String[] args) {30         // TODO 自动生成的方法存根31       int a[][]={
{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};32 orderprint(a);33 }34 35 }

输出结果为:

1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10,

转载于:https://www.cnblogs.com/guozhenqiang/p/5482570.html

你可能感兴趣的文章
基础练习一
查看>>
HTML5 增强的页面元素
查看>>
Python所涉及领域
查看>>
信息安全作业五 2016012101 上官文钦
查看>>
拓扑排序
查看>>
iOS opencv
查看>>
[转]KMP算法
查看>>
第四届CCCC团体程序设计天梯赛 后记
查看>>
Daily Codeforces 计划 训练时录
查看>>
51Nod 1557 两个集合(二分)
查看>>
Django(app的概念、ORM介绍及编码错误问题)
查看>>
UVa 120 煎饼
查看>>
ZOJ 2314 Reactor Cooling(无源汇上下界网络流)
查看>>
easyui页面布局
查看>>
OSS设置CORS规则以后还是报No 'Access-Control-Allow-Origin'解决方法
查看>>
有用到的网站网址
查看>>
大型运输行业实战_day04_3_高级查询+分页
查看>>
正则表达
查看>>
ASP.NET中的DEC加密解密过程
查看>>
关于jdk的配置
查看>>