本质是对二维数组进行赋值。
思路解析:
1) 确定赋值的路线
- 按照回型路线一层一层的拆分,确定拆分的回型个数 : 对于偶数 n/2 奇数(n + 1)/ 2
- 对每一层回型再次进行拆分,按照4条边进行拆分 上 右 下 左
2) 进行赋值
- 设置value = 1, 每次赋值后 value++
import java.util.Scanner;
/**
* @author HelloWorld
* @create 2021-04-06-21:25
* @email 154803771@qq.com
*/
public class backNumber {
/**
* 本质是对二维数组进行赋值。
*思路解析:
* 1) 确定赋值的路线
* (1)按照回型路线一层一层的拆分,确定拆分的回型个数 : 对于偶数 n/2 奇数(n + 1)/ 2
*` (2) 对每一层回型再次进行拆分,按照4条边进行拆分 上 右 下 左
* 2) 进行赋值
* 设置value = 1, 每次赋值后 value++
*
*/
public static void main(String[] args) {
System.out.print("Input Number: ");
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int[][] array = new int[n][n];
// 记录回形的个数
int count = n % 2 == 0 ? n / 2 : (n + 1) / 2;
// 进行赋值
int value = 1;
for (int i = 0; i < count; i++) {
// 上
for (int top = i; top < n - i; top ++) {
if (array[i][top] == 0) {
array[i][top] = value;
value++;
}
}
// 右
for (int right = i + 1; right < n - i; right ++){
array[right][n - i - 1] = value;
value ++;
if (array[right][n - i - 1] == 0) {
array[right][n - i - 1] = value;
value++;
}
}
// 下
for (int down = n - i - 1; down >= i; down--) {
if(array[n - i - 1][down] == 0) {
array[n - i - 1][down] = value;
value++;
}
}
// 左
for (int left = n - i - 1; left >= i + 1; left--) {
if(array[left][i] == 0){
array[left][i] = value;
value++;
}
}
}
// 打印
System.out.println("Array: ");
for (int[] row : array) {
for (int data : row) {
System.out.print(data + "\t");
}
System.out.println();
}
}
}
运行结果