螺形矩阵(回形数方阵的实现)

回形数格式方阵的实现(螺形方阵)


从键盘输入一个整数(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 记

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值