打印所有方程解的算法

时间:2015-10-18 09:42:29

标签: algorithm pseudocode combinatorics equation

我有这个问题:

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

x1 + x2 + x3 + x4 + x5 = 20

我希望打印此等式的所有非负整数解,我必须只使用数字3, 4, 5, 6

例如:

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

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

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

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

你可以将数字集开始为[3,4,5,6]而不是在选择后删除元素,如果你得到了所需数量的元素,则检查递归的深度。

这更通用,可以解析具有不同数量元素的方程式,而无需添加/删除嵌套循环。

答案 1 :(得分:0)

在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