编制matlab程序,用户输入n, 即可产生一个和为n的Dürer魔方。

编制matlab程序,用户输入n, 即可产生一个和为n的Dürer魔方。

n=input('n=');

S=sum(1:n)

生成矩阵啊,不是求和

不是和为n吧,是n*n的矩阵吧?


这样子的吗

https://jingyan.baidu.com/article/359911f570621757fe030698.html

不,就是生成和为n的4阶矩阵


发一下最终想要的效果图把

就是4阶的Dürer魔方

每阶矩阵的和都是固定的吧

看错了,就是输入n,要求Dürer魔方的和为n

这没效果图,都不知道什么样

按你的说法,输入n和为n的魔方有很多种情况的吧

需求,题目。也可以发出来一起看看

就只有这么点,没有效果图,就是任意输出一种魔方

要输出4阶的Dürer魔方

你说的 是4阶魔方,那按4阶魔方的说法应该是1.。。16所有的数排成矩阵,分别满足行,列,对角和四个方角数之和都一样

而你又说输入n,满足和要为n,那你这个n是多少,1,2,3,4行吗?显然大家都不解。

不是,只要满足和一样,填的数没有要求

输入一个整数  产生行和列和。因为 基有7个,产生一个含有7个随机整数的向量,然后这七个整数的和为输入的值,最后每个数乘一个基加起来,要多种结果

先 magic(4) 生成4阶矩阵

然后把矩阵中每个数都加上 (n-34)/4

4阶矩阵的和就变成n了


你举例说明吧,为什么基一定是7个?越说就越多,我现在说n=8你举一个满足条件的例子说明吧,也许本来好简单,描述不清楚就显得好复杂

因为4阶burer魔方的基就是7个啊,7个线性无关的矩阵,用randint生产随机1*7矩阵,生成一个和为n的4阶durer魔方

a =[
    16, 2, 3, 13,
    5, 11, 10, 8,
    9,  7, 6, 12,
    4, 14, 15, 1
]
n = int(input('n:'))
for i in range(16):
    a[i] += (n-34)/4
for i in range(0,16,4):
    print(a[i:i+4])



这样不行

我已经会了不用了

哈哈。那你给个例子啊

这个四阶魔方的7个基已知,就找出7个随机整数就行了,乘上基加起来就可以得到一个矩阵了,所以只要生成一个1*7的随机整数矩阵就行了,条件是这七个数加起来等于n

西安交通大学的题目表示好难,哈哈

https://www.cnblogs.com/dlight/p/biwen.html