题目描述:
解题步骤:
my(); 表示自己写的
web(); 网上大神写的
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt();
int my(num); //暂时还无,后续补充
int web(num);
scanner.close();
}
public static void web(int num) {
int[][] arr = new int[num][num];
//值
int value = 1;
//行
int i = 0;
//列
int j = 0;
//矩阵最中心的值为num*num,此时赋值结束
while (arr[i][j] != Math.pow(num, 2)) {
arr[i][j] = value;
/*当遇到四个角的拐点时,进行判断,然后对i和j的值进行递增或者递减;int型的二维数组在没有赋值时内层元素默认为0,作为判断条件*/
//右箭头方向赋值
if (j != num - 1 && arr[i][j + 1] == 0) {
//为了预防还没有走到最上面就往右箭头方向赋值
if (i > 0 && arr[i - 1][j] == 0) {
i--;
} else {
j++;
}
//下箭头方向赋值
} else if (i != num - 1 && arr[i + 1][j] == 0) {
i++;
//左箭头方向赋值
} else if (j > 0 && arr[i][j - 1] == 0) {
j--;
//上箭头方向赋值
} else if (i > 0 && arr[i - 1][j] == 0) {
i--;
}
value++;
}
for (int[] clomns : arr) {
for (int rows : clomns) {
System.out.print(rows + " ");
}
System.out.println();
}
}
}
自己问题:
目前发现自己还没有判断这种二维矩阵中某个arr[i][j](注意此时 i j 还未赋值)是否是回型矩阵拐点的思维,研读大佬的代码后略有思维,稍后自己尝试下