打印方程所有解的算法
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
我有这个问题:
假设我们有这个简单的等式
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