回形数算法 根据尚硅谷康师傅老师的视频中提到一个学生的面试题后,自己手写了回形数算法。 回形数指的是: 如果是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();
}
}