打印方程所有解的算法

Algorithm to print all solutions of equation

我有这个问题:

假设我们有这个简单的等式

x1 + x2 + x3 + x4 + x5 = 20

我想打印这个方程的所有非负整数解,我必须只使用数字3, 4, 5, 6

例如:

0 + 4 + 4 + 6 + 6 = 20
etc.

我不想用特定的编程语言来写,只想用伪代码

有什么想法吗?

这可能有效: Finding all possible combinations of numbers to reach a given sum

您可以将数字集作为 [3,4,5,6] 开始,并且一旦选择了元素就不要删除元素,并通过递归深度检查您是否恰好获得了所需数量的元素。

这更通用,可以求解具有不同元素数量的方程,而无需 add/remove 嵌套循环。

在java代码中

    int []numbers = {0, 3, 4, 5, 6};
    int res=20;
    int sum=0;

    for(int i:numbers)
        for(int j:numbers)
            for(int k:numbers)
                for(int l:numbers)
                    for(int m:numbers) {
                        sum = i + j + k + l + m;
                        if(sum==res) {
                        String solution = i + " " + j + " " + k + " " + l +" " + m;
                        Log.i("solution", "---- " + solution);}
                    }

在伪代码中是这样的:

FOR each number1 in the number_list
    FOR each number2 in the number_list
        FOR each number3 in the number_list
            FOR each number4 in the number_list
                FOR each number5 in the number_list
                    sum = number1+number2+number3+number4+number5;
                    IF sum IS EQUAL TO 20 THEN
                        Print number1, number2, number3, number4, number5
                    ENDIF
                ENDFOR
            ENDFOR
        ENDFOR
    ENDFOR
ENDFOR