b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

Excel-计算n阶偶数和奇数魔方

电脑杂谈  发布时间:2020-04-09 17:13:37  来源:网络整理

奇数阶幻方_单偶数阶幻方_偶数阶魔方

偶数和奇数幻方算法是所有幻方中最困难的.

至此,所有魔术平方算法均已完成. 您可以将所有算法结合在一起单偶数阶幻方,成为通用的魔术平方算法. 只需使用mod函数确定开头的顺序,然后调用相应的VBA模块即可.

请参阅奇数和双偶数幻方的算法和代码

如果您忘记了,让我们重复甚至魔方的定义:

1. 双偶数阶幻方: n为偶数并可除以4

n = 4、8、12、16、20 ...

n = 4k,k = 1,2,3,4,5 ...

2. 偶数和偶数幻方: n为偶数且不能除以4

n = 6、10、14、18、22 ...

n = 4k + 2,k = 1,2,3,4,5 ...

单偶阶幻方算法:

n是偶数,不能除以4

n = 6、10、14、18、22 ...

n = 4k + 2,k = 1,2,3,4,5 ...

以n = 10为例,此时k = 2

1. 将方阵分为以下四个象限A,B,C和D,每个象限是一个奇数幻方.

2. 使用Robber方法,依次填充象限A,B,C和D

单偶数阶幻方_奇数阶幻方_偶数阶魔方

3. 从象限A的中间行和中间列开始,从左到右标记k个正方形. A象限的其他行用最左侧的k网格标记

4. D象限与上面相同

5. 交换在象限A和D中标记的位置

6. 在象限C的中间列,从右到左,标记列k-1

7. 象限B与上面相同

*注意: 由于六阶幻方的k-1 = 0,因此无需在C和B象限中交换数据

8. 在象限C和B中标记的单元格的位置互换,并且完成了10阶魔方.

代码:

子单个甚至偶数幻方fill_array记录()

n = Val(输入框(“请输入[6]上方的偶数和偶数: ”,“阶n的魔方阶”,10))'阶输入框,默认输入为10

如果n Mod 4 2或n

[a1] .CurrentRegion =“”

[a1]. 调整大小(n,n). 选择

“清空并选择填写字段

Dim x为整数,k为整数

ReDim a(1 to n,1 To n)'定义数组

r = 1: c =(n / 2 +1)/ 2'A象限,第一行中间列

单偶数阶幻方_偶数阶魔方_奇数阶幻方

a(r,c)= 1'一个象限填充第一个数字

a(r + n / 2,c)= 3 *(n / 2)^ 2 + 1'D象限填充第一个数字

a(r,n / 2 +(n / 2 + 1)/ 2)= 2 *(n / 2)^ 2 + 1'C象限填充第一个数字

a(r + n / 2,n / 2 +(n / 2 + 1)/ 2)=(n / 2)^ 2 + 1'B象限填充第一个数字

对于i = 2 To(n / 2)^ 2'A象限值

如果r = 1且c = n / 2那么'当小象限到达第1行的最后一列

r = r +1'转到下一行

ElseIf r = 1然后'在小象限的第一行,而不是最后一列

r = n / 2: c = c +1'到小象限的最后一行,第+1列

ElseIf c = n / 2然后'到小象限的最后一列

r = r-1: c = 1'到小象限的第一列单偶数阶幻方,第-1行

ElseIf a(r-1,c + 1)然后'当右上角的框未填充空白

r = r +1'转到下一行

其他“其他”

r = r-1: c = c +1'右上梯子

如果结束

a(r,c)= i'一个象限的订单号

偶数阶魔方_奇数阶幻方_单偶数阶幻方

a(r + n / 2,c)= 3 *(n / 2)^ 2 + i'D象限顺序填充

a(r,c + n / 2)= 2 *(n / 2)^ 2 + i'C象限填充顺序

a(r + n / 2,c + n / 2)=(n / 2)^ 2 + i'B象限顺序填充编号

下一步

k =(n-2)/ 4'将值分配给k

对于c =(n / 2 + 1)/ 2到(n / 2 + 1)/ 2 +(k-1)',从象限A的中间列开始,从左到右,标记列k <<

r =(n / 2 +1)/ 2'A象限中间行

'替换与D象限相同的区域

x = a(r,c)

a(r,c)= a(r + n / 2,c)

a(r + n / 2,c)= x

下一步

对于c = 1到k',从左到右,标记列k

对于r = 1到n / 2'A象限,所有行

如果r(n / 2 + 1)/ 2然后'扣除中间行

'替换与D象限相同的区域

x = a(r,c)

a(r,c)= a(r + n / 2,c)

a(r + n / 2,c)= x

如果结束

下一步

下一步

对于c =(n / 2 + 1)/ 2 + n / 2-(k-1)+1从C象限的中间列到(n / 2 + 1)/ 2 + n / 2' ,从右到左,标记列k-1

对于r = 1到n / 2'C象限,所有行

'替换与象限B相同的区域

x = a(r,c)

a(r,c)= a(r + n / 2,c)

a(r + n / 2,c)= x

下一步

下一步

选择= a

结束子

运行效果:

Excel学习世界

转发和观看也是爱!


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-169633-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 刘力源
        刘力源

        有没有人更新了指纹进不去

      • 钟晨昊
        钟晨昊

        可口可乐公司每年都出新饮料或者收购新晋品牌的

      热点图片
      拼命载入中...