显示方程x1 + x2 + ... + xk = n的所有正解

时间:2015-12-07 09:14:10

标签: algorithm combinations

下面是显示方程x1 + x2 + ... + xk = n的所有正解的程序,其中k和n是正整数:

func solution(k: Int, n: Int) {
    if k > n || k <= 0 {
        print("No solution")
    } else 
        if k==1 {
            print(n)
        } else {
            for i in 1...(n-k+1) {
                print(i, terminator:"")

                solution(k-1, n: n-i)
                print("")
            }
        }
}
solution(4, n: 4)

这个程序运行良好,n = 4和k = 1,2,4,但是当k = 3时它显示不正确。有人可以帮助找到错误吗?

1 个答案:

答案 0 :(得分:2)

问题是n = 4且情况k = 1,2,4,每个i只有一个解决方案,因此list_to_fill = [2,'else'] for col_name in list_to_fill: if col_name not in new_df.columns: new_df[col_name] = 0 In [252]: new_df Out[252]: subtype 1 2 else type A 25 0 0 B 12 0 0 C 40 0 0 正常工作。

但是,对于k = 3的情况,例如,在k = 3处打印1之后,因此有多个正确的情况:print(i, terminator:"")(1 , 2, 1),这意味着只有一个命令{在( 1, 1, 2) {1}}是不够的。

图像打印例程将类似于:

print(1, terminator:"")

解决此问题的一种简单方法是在每个递归步骤中打印,而不是将所有结果存储在一个数组中,并在k达到0时打印此数组