回形数格式方阵的实现(螺形方阵)
从键盘输入一个整数(1~20)
则以该数字为矩阵的大小,把1,2,3…n*n 的数字按照顺时针螺旋的形式填入其中
例如 输入 2
1 2
3 4
import java.util.Scanner;
public class HuiXingArray01 {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
System.out.print("请输入您的矩阵阶数:");
int n=sc.nextInt(); //读取阶数
int [][] arr=new int[n][n];
int sum = 0; // 已填入的数字总数
int start = 0; // 当前矩阵的起始边界
int end1 = n - 1; // 当前矩阵的结束边界
int t = 1; // 要填入的数字
int i,j;
while(sum<n*n){
//向右
i=start;
for ( j=start;j<=end1;j++){
if(arr[i][j]==0){
arr[i][j]=t;
sum++;
t++;
}
}
// 向下
j=end1;
for ( i=start;i<=end1;i++){
if(arr[i][j]==0){
arr[i][j]=t;
sum++;
t++;
}
}
//向左
i=end1;
for ( j=end1;j>=start;j--){
if(arr[i][j]==0){
arr[i][j]=t;
sum++;
t++;
}
}
//向上
j=start;
for (i=end1;i>=start;i--){
if(arr[i][j]==0){
arr[i][j]=t;
sum++;
t++;
}
}
start++;
end1--;
}
for(int l=0;l<n;l++){
for(int r=0;r<n;r++){
System.out.print(arr[l][r]+" ");
}
System.out.println();
}
}
}
以上的实现主要是利用了四个 for 循环,依次向右填值、向下填值、向左填值,向上填值
同时,为了防止重复赋值导致覆盖原有值的情况,添加了一个 if 语句进行了判断
总结
算法还是很神奇,得多看,多想,同时还有一个好方法,就是试着讲一讲,假设在说给别人听,也会提高自己的理解能力。
今日比较划水水,没有学习 Java 基础知识,搞这个题目确实耽误了很多时间,同时,今天生活里面还发生了一些事情,让人情绪低落。
继续加油吧!!kcw and everyone!!!
事情永远不会变得容易,但是你会变得更好。
奥利给!
2025.01.26 夜 1:33 于 Brisbane 记