一种特殊的魔方阵解法

 这里我们要输入一个正整数N,而输出的则是2N-1的方阵,形式如上图。

当我们第一次见到这种题时我们想到的第一种解法可能是翻折,很明显方阵可以分为四个面积相等的方阵,然后四个方阵完全相同,这就意味着四个方阵对称,我们可以将左上角的方阵打出来后进行翻折,最终就能成为我们所需要的方阵,但这样程序未免有些过于复杂。

这里采用一种新的思路:方阵覆盖。

仔细观察方阵,如3阶方阵,我们可以看成,第一步先将方阵全部赋值为1,第二步,从第2列第2行到,第4行所覆盖的方阵赋值为2,最后第三行第三列的方阵赋值为3。这就实现了方阵的覆盖。不论怎么覆盖,边界之和一定为2N,如2到4行,3到3行,1到5行,两数之和一定为2N。

有了这个思路,我们就可以开始编写程序了,我们这里采用二维数组进行操作:

 这种方法,不仅程序简单,思路也很简单,但就是难以想到,程序可以不断优化,方法也是可以不断优化的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值