求解线性丢番图方程(有关示例,请参见说明)
首先,让我澄清一下(在你们解雇我之前),这不是家庭作业问题,我也不是大学生。:)
感谢@Klas等人,我的问题现在归结为一个数学方程式,需要以编程方式解决。
我正在寻找可以解决的算法/代码Linear Diophantine Equation
。对于像我这样的小凡人,这是这样的方程式:
示例1 :(3x + 4y + 5z = 25
找到x,y,z的所有可能值)
示例2 :(10p + 5q + 6r + 11s = 224
找到p,q,r,s的所有可能值)
示例3 :(8p + 9q + 10r + 11s + 12t = 1012
找到p,q,r,s,t的所有可能值)
我尝试谷歌搜索无济于事。我以为已经可以编写一些代码来解决这个问题。请让我知道你们是否遇到过已经实现此功能的某种库。而且,如果解决方案是用Java编写的,那么没有什么比这更酷了!算法/伪代码也可以。非常感谢。
回答:
蛮力递归是一个选项,具体取决于您允许值的大小或数量成为多少。
假设:用户输入(被乘数)始终是不同的正整数。要找到的系数必须是非负整数。
算法:
Of the multiplicands, let M be the largest.Calculate C=floor(F/M).
If F=M*C, output solution of the form (0,0,...,C) and decrement C
If M is the only multiplicand, terminate processing
Loop from C down to 0 (call that value i)
Let F' = F - i*M
Recursively invoke this algorithm:
The multiplicands will be the current set minus M
The goal value will be F'
For each solution output by the recursive call:
append i to the coefficient list and output the solution
以上是 求解线性丢番图方程(有关示例,请参见说明) 的全部内容, 来源链接: utcz.com/qa/421240.html