请原谅我的天真,因为我没有太多的编程经验。在谷歌搜索一个不相关的问题时,我偶然发现了这个:
https://www.geeksforgeeks.org/find-number-of-solutions-of-a-linear-equation-of-n-variables/
我完全理解第一段(效率极低)的代码。但第二个:
def countSol(coeff, n, rhs):
# Create and initialize a table
# to store results of subproblems
dp = [0 for i in range(rhs + 1)]
dp[0] = 1
# Fill table in bottom up manner
for i in range(n):
for j in range(coeff[i], rhs + 1):
dp[j] += dp[j - coeff[i]]
return dp[rhs]
让我困惑。我的问题是:为什么第二个程序要计算非负整数解的数量?
我写了几个例子,包括文章中给出的例子,我知道它确实做到了这一点。而且我了解它是如何填充列表的。但我不明白为什么会这样。
请原谅对某些人来说一定是一个无知的问题。但是我很想理解这个逻辑,因为我认为这样一个小片段非常聪明——它能够回答像“存在多少非负整数解”这样的一般问题(对于一些一般方程)。