0
点赞
收藏
分享

微信扫一扫

java se基础(回形数算法)

盖码范 2024-01-18 阅读 16

回形数算法 根据尚硅谷康师傅老师的视频中提到一个学生的面试题后,自己手写了回形数算法。 回形数指的是: 如果是3维矩阵,案例如下: 1 2 3 9 10 4 8 6 5

如果是4维矩阵,数字如下: 1 2 3 4 13 14 15 5 12 18 16 6 11 9 8 7

以下算法其实可以改为递归函数。 根据老师说的,即使会写此算法,也仅仅只是代表你会写。

import java.util.Scanner;

/**
 * ClassName: ArrayExer02
 * Package: PACKAGE_NAME
 * Description:
 *
 * @Author 无为
 * @Create 2024/1/17 16:20
 * @Version 1.0
 */
public class ArrayExer02 {
    public static void main(String[] args) {
        // 回形数算法
        System.out.println("请输入一个数字:");
        Scanner sc = new Scanner(System.in);
        int size = sc.nextInt();
        int[][] hxs = new int[size][size];
        int end = size;
        int start = 0;
        int first_num = 0;
//         顶边  和底边
        for (; end > end / 2; end--, start++) {
//            先遍历顶边
            for (int top = start; top < end; top++) {
                first_num += 1;
                hxs[start][top] = first_num;
            }


//            再遍历右边
            for (int right = start + 1; right < end; right++) {
                first_num += 1;
                hxs[right][end - 1] = first_num;

            }

//            再遍历底边
            for (int bottom = end - 1 - 1; bottom >= start; bottom--) {
                first_num += 1;
                hxs[end - 1][bottom] = first_num;

            }

//            再遍历左边
            for (int left = end - 1; left > start; left--) {
                first_num += 1;
                hxs[left][start] = first_num;
            }
        }
        for (int[] ii : hxs) {
            System.out.println();
            for (int i : ii) {
                System.out.print(i + "\t");
            }
        }
        sc.close();


    }
}
举报

相关推荐

0 条评论