armyboy112 发表于 2022-6-12 21:38:05

数列程序化求解的方法

1*a1+2*a2+....48*a48=480
a1+a2+....a48=80
an为自然数


求助各位大神,满足条件的{a1,a2....,a48}大概有多少组?
有没有程序化求解的办法?

northwolves 发表于 2022-6-13 15:22:57

递归应该可以,层数有点多

northwolves 发表于 2022-6-13 20:14:50

计算了一下,大约为 20746894993467691

armyboy112 发表于 2022-6-13 22:18:07

看来还得添加新的约束条件,这个数列是我从工程需要抽象出来的,本来想穷举出来,在机器上看实际效果的
这解也太多了点

armyboy112 发表于 2022-6-13 22:19:35

版主是用48层递归计算出来的吗,数列中的数值均为自然数也要这么多解吗?

northwolves 发表于 2022-6-13 22:30:29

递归到20就卡死了。递推出来的。注意自然数是包含0的

armyboy112 发表于 2022-6-13 22:33:18

是的,确实是有0的情况
谢谢了

northwolves 发表于 2022-6-13 23:20:25

import numpy as np
def s(n,s1,s2):
    t=np.zeros((n+1,s1+1,s2+1))
    for i in range(s2+1):
      t = 1
      t = 1
    for nn in range(3,n+1):
      for x in range(s2+1):
            for i in range(s1//nn+1):
                for y in range(s1+1):
                  if y+i*nn<=s1:
                        if x+i<=s2:
                            t +=t
    return(int(t))
print (s(48,480,80))

返回20746894993467692

armyboy112 发表于 2022-6-14 22:29:13

多谢!

armyboy112 发表于 2022-6-14 22:34:44

弱弱的问一句,这是C语言吗?我怎么感觉不太认识。。。
页: [1] 2
查看完整版本: 数列程序化求解的方法