java基础算法——n阶幻方的实现

本文介绍了幻方的概念,包括3阶和4阶幻方,并详细讲解了使用Java实现奇数阶、双偶阶和单偶阶幻方的算法,包括罗伯法、对称交换法和象限对称交换法。通过代码实现和测试,确保了算法的正确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、认识幻方

        说到幻方,很多人可能还不知道什么是幻方。幻方是一种将一些连续的正整数安排在正方形格子中,使每行、列和对角线上的数字和都相等的方法。因为正方形格子可能是3*3或者n*n的,所以幻方就有了几阶幻方的说法。需要注意的是幻方最低是3阶!

                                                               

                                       三阶幻方                                              四阶幻方

二、n阶幻方实现

        在网上参考了现有的求解幻方的算法,将幻方进行了分类:奇数阶幻方、单偶阶幻方、双偶阶幻方。接下来使用java来实现这三种幻方的求法。

      奇数阶幻方

       一、 奇数阶幻方我采用了最简单的罗伯法:

            1、将最小的数放在第一行最中间

            2、然后依次将下一个数放在上一个数的右上方

            3、如果下一个数超出了上边界则放在下边界,纵坐标不变;超出了右边界则放在左边界,横坐标不变

            4、如果下一个数的位置已经存放了数,则将下一个数放在上一个数的下方

       二、思考如何将算法转换成代码

            1、如何存放幻方(即如何将存放数字的排列)

                 数组作为一种常用的存储数据的引用类型,其下标还可以很好的方便我们对幻方里的值进行查询和修改,所以使用int类型的二维数组存储幻方中的数字。

                 int[][]  arr=new  int[len][len];//len是幻方的阶数

            2、如何记录上一个数与当前数的坐标

                arr数组的下标即可以记录数字的下标。我们将一系列连续的数存放在数组中肯定会使用到for循环,那么完全可以使用两个int值x,y来记录上个数的下标,然后根据罗伯法对x,y的值进行修改得到正确的当前数的下标

        三、代码填充

            1、定义二位数组,长度为幻方阶数

                 int[][]  arr=new  int[len][len];//len是幻方的阶数

            2、将最小的数num存放在第一行正中间,同时记录该数的坐标

         

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值