博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
矩阵顺时针螺旋输出2种不同的方法。
阅读量:7200 次
发布时间:2019-06-29

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

hot3.png

124440_aXPv_925404.jpg

第一种解法:

package com.zhm;/** * Created by zhm on 2015/6/27. * 1 2 3 * 4 5 6 * 7 8 9 * 上面的矩阵按照顺时针输出:1,2,3,6,9,8,7,4,5 * 递归+起止判断实现。 */public class JuzhenPrint {    /**     * 初始化数组矩阵     * @param length     * @return     */    public int[][] initJuzheng(int length){        int[][] result = new int[length][length];        for(int i=0;i
<10){                    tmp = (int)(Math.random()*100);                }                result[j][i]=tmp;                System.out.print(result[j][i] + "   ");            }            System.out.println(" ");        }        return result;    }    /**     * 顺时针输出矩阵     * @param num     * @param start     * @param end     */    public void output(int[][] num,int start,int end){        if(start>end || end<=0)return;        for(int i=start;i<=end;i++){            System.out.print(num[i][start] + ",");        }        for(int i=start+1;i<=end;i++){            System.out.print(num[end][i] +",");        }        for(int i=end-1;i>=start;i--){            System.out.print(num[i][end]+",");        }        for(int i=end-1;i>start;i--){            System.out.print(num[start][i]+",");        }        output(num,start+1,end-1);    }    public static void main(String[] args) {        JuzhenPrint jz = new JuzhenPrint();        int[][] juzhen = jz.initJuzheng(3);        jz.output(juzhen, 0, juzhen.length - 1);    }}

结果:

61   11   40    26   47   22    76   44   24    61,11,40,22,24,44,76,26,47,

第二种解法:

package com.zhm;import java.util.ArrayList;import java.util.List;/** * Created by zhm on 2015/6/27. * 1 2 3 * 4 5 6 * 7 8 9 * 上面的矩阵按照顺时针输出:1,2,3,6,9,8,7,4,5 * 通过旋转矩阵+切分矩阵实现 */public class JuzhenRotation {    /**     * 初始化数组矩阵     * @param length     * @return     */    public int[][] initJuzheng(int length){        int[][] result = new int[length][length];        for(int i=0;i
<10){                    tmp = (int)(Math.random()*100);                }                result[j][i]=tmp;                System.out.print(result[j][i] + "   ");            }            System.out.println(" ");        }        return result;    }    private void printResult(int[][] juzhen) {        List
 result = new ArrayList
();        rotationAry(juzhen, result, 0);        for (Integer data : result) {            System.out.print(data + ",");        }    }    /**     *     * @param juzhen     * @param result     * @param count  记录旋转次数,当count=4表示已经旋转了一圈。     */    private void rotationAry(int[][] juzhen,List
 result,int count) {        //递归至矩阵无元素退出。偶数行*列矩阵        if(juzhen.length==0){            return;        }        for(int i=0;i

结果:

44   74   72    20   88   35    21   25   73    44,74,72,35,73,25,21,20,88,

两种方法应该是第一种效率高,第二种给人感觉好理解一些,完全顺着题目的意思解答的。

转载于:https://my.oschina.net/zhmlvft/blog/471456

你可能感兴趣的文章
MySql 建表、添加字段、修改字段、添加索引SQL语句写法
查看>>
Core Bluetooth框架之三:最佳实践
查看>>
Gson序列化时@SerializedName的使用
查看>>
windows上pip install 报编码错误
查看>>
boost asio学习笔记 [1] - 同步通讯
查看>>
什么是BMC商业模式?
查看>>
不同浏览器中单选框和文字对齐的兼容
查看>>
Python 浮点数在列表中排序的问题
查看>>
一个失业三年后,又重新找回自信的小伙靠的是什么?
查看>>
JFinal学习-Excel导出
查看>>
linuxbridge 小贴士
查看>>
红旗inWise操作系统V8.0发布了!!!
查看>>
tiles2
查看>>
vi 合并多个文件
查看>>
切换npm源
查看>>
细数JDK里的设计模式
查看>>
Oracle中增加Split函数
查看>>
nagios 报警频率控制
查看>>
scrapy 应用
查看>>
Redis 部署策略
查看>>