NO_Getway 发表于 2014-06-17 00:22

求一个多元一次函数的可能解

cu的大神们,小弟学艺不精,请教个问题

对于给定的元祖(或者列表)a,求元祖(或者列表)中各个元素乘一个整数然后在求和等于一个常数b

例子:a=(1,2,3),b=100,求1*x + 2 * y + 3 * z = 100中x,y,z的可能解对应的表达式。
解有:
1*100 +2 *0 +3*0=100
1*98 + 2 *1 +3 *0 =100


那元祖(或者列表)如果为定长,那么尚可把每个可能遍历求解,那么如果元祖(或者列表)是未知长度呢?

求给个思路或者给段核心代码,谢谢

bikong0411 发表于 2014-06-17 09:42

for x in xrange(100):
    for y in xrange(50):
      for z in xrange(33):
            if x + 2*y + 3 * z == 100:
                print("x=%d,y=%d,z=%d" % (x,y,z))

ssfjhh 发表于 2014-06-17 09:46

#一条直线方程,解的个数是无限的,我暂且假定,楼主想要的是只有非负整数解。
a = (1, 2, 3)
b = 100

for x in range(0, b // a):
    for y in range(0, b // a):
      for z in range(0, b // a):
            if a * x + a * y + a * z == b:
                print('{i} * {x} + {j} * {y} + {k} * {z} = {b}'.format(
                  i = a, j = a, k = a, x = x, y = y, z = z, b = b))

NO_Getway 发表于 2014-06-17 11:16

回复 3# ssfjhh

就是你理解的意思

那如果 a这个元祖 长度不定呢?
总不能这样子遍历啊 我提问上说道了

麻烦解答下呢

   

NO_Getway 发表于 2014-06-17 12:17

回复 2# bikong0411

这个是简单,如果a的元素长度不定呢
   

ssfjhh 发表于 2014-06-17 13:58

回复 5# NO_Getway


    显而易见,递规解决,代码只能晚上给你。

icymirror 发表于 2014-06-17 14:31

回复 1# NO_Getway
你可以尝试使用SymPy的Solver,这个可以的。

Hadron74 发表于 2014-06-17 14:48

回复 6# ssfjhh

写了个递归的代码,按照你的思路,还能改进吗?
、def printResult(A,a,b):
    result = []
    for ll,ai in zip(A,a):
      result.append( ' {} * {} '.format(ll,ai))
    print "+".join(result)+" = {} ".format(b)

def solveEq(a,b,P,A,i):
    if i == len(P):
      s = sum()
      if s == b :
            printResult(A,a,b)
      return

    for j in range(P):
      A = j
      solveEq(a,b,P,A,i+1)


a = (1,2,3)
b = 10
P =
A = * len(a)

solveEq(a,b,P,A,0)
结果: 0 * 1 + 2 * 2 + 2 * 3= 10
0 * 1 + 5 * 2 + 0 * 3= 10
1 * 1 + 0 * 2 + 3 * 3= 10
1 * 1 + 3 * 2 + 1 * 3= 10
2 * 1 + 1 * 2 + 2 * 3= 10
2 * 1 + 4 * 2 + 0 * 3= 10
3 * 1 + 2 * 2 + 1 * 3= 10
4 * 1 + 0 * 2 + 2 * 3= 10
4 * 1 + 3 * 2 + 0 * 3= 10
5 * 1 + 1 * 2 + 1 * 3= 10
6 * 1 + 2 * 2 + 0 * 3= 10
7 * 1 + 0 * 2 + 1 * 3= 10
8 * 1 + 1 * 2 + 0 * 3= 10
10 * 1 + 0 * 2 + 0 * 3= 10

NO_Getway 发表于 2014-06-17 15:19

回复 6# ssfjhh

先谢谢了
   

ssfjhh 发表于 2014-06-17 21:14

回复 8# Hadron74


    Nice。

@NO_Getway
页: [1] 2 3
查看完整版本: 求一个多元一次函数的可能解