Java打印N阶回形方阵打印

某厂面试题,定义一个int类型变量N,控制台打印结果如下:

N=4:
01 02 03 04
12 13 14 05
11 16 15 06
10 09 08 07

N=6:
01 02 03 04 05 06
20 21 22 23 24 07
19 32 33 34 25 08
18 31 36 35 26 09
17 30 29 28 27 10
16 15 14 13 12 11
N的取值为正整数,按要求写出该方法。

题目分析:
以N=6的6x6阶矩阵为例:
抽象定义该矩阵每层外圈的四个角自左上到左下顺时针为:ABCD
如第一圈:01-06-11-16
第二圈的A-B-C-D为20-07-10-17
除去第一行后续方向 B-C&C-D长度相等,
且连接BD可形成等边三角形,
且其边长自N-1开始,每1个等腰三角形形成后长度-1。
抽象理解回形数字流转方向,自B开始 BC CD DA AB流转顺序为:下左上右 循环

除去第一行后,第一个等腰三角形三点为07-11-16
两腰分别为:07 08 09 10 11 - 12 13 14 15 16 长度为N-1=5
下一个三角形与此类似且长度为N-1-1=4

因此我们定义几个变量

  • 方向:表示数字流转方向:下左上右 4次一循环
    • 下左上右分别为:0 1 2 3
  • 边长:每两条形成后,边长自N-1开始以1 为步长递减

面对N阶矩阵,可将其放入二维数组中,本文采用Java语言进行解题
NxN阶行列式 生命NxN大小的二维数组

  private static final int DOWN = 0;	//向下
    private static final int LEFT = 1;	//向左
    private static final int UP = 2;   	//向上
    private static final int RIGHT = 3;  //向右

    public static void main(String
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值