求出一堆数中和等于m的所有可能组合 JAVA输入两个整数 n 和 m,从数列1,2,3.n 中 随意取几个数,使其和等于 m ,要求将其中所有的可能组合列出来.最好是用JAVA写,告诉思路也可以.
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/21 08:13:44
![求出一堆数中和等于m的所有可能组合 JAVA输入两个整数 n 和 m,从数列1,2,3.n 中 随意取几个数,使其和等于 m ,要求将其中所有的可能组合列出来.最好是用JAVA写,告诉思路也可以.](/uploads/image/z/1581366-30-6.jpg?t=%E6%B1%82%E5%87%BA%E4%B8%80%E5%A0%86%E6%95%B0%E4%B8%AD%E5%92%8C%E7%AD%89%E4%BA%8Em%E7%9A%84%E6%89%80%E6%9C%89%E5%8F%AF%E8%83%BD%E7%BB%84%E5%90%88+JAVA%E8%BE%93%E5%85%A5%E4%B8%A4%E4%B8%AA%E6%95%B4%E6%95%B0+n+%E5%92%8C+m%2C%E4%BB%8E%E6%95%B0%E5%88%971%2C2%2C3.n+%E4%B8%AD+%E9%9A%8F%E6%84%8F%E5%8F%96%E5%87%A0%E4%B8%AA%E6%95%B0%2C%E4%BD%BF%E5%85%B6%E5%92%8C%E7%AD%89%E4%BA%8E+m+%2C%E8%A6%81%E6%B1%82%E5%B0%86%E5%85%B6%E4%B8%AD%E6%89%80%E6%9C%89%E7%9A%84%E5%8F%AF%E8%83%BD%E7%BB%84%E5%90%88%E5%88%97%E5%87%BA%E6%9D%A5.%E6%9C%80%E5%A5%BD%E6%98%AF%E7%94%A8JAVA%E5%86%99%2C%E5%91%8A%E8%AF%89%E6%80%9D%E8%B7%AF%E4%B9%9F%E5%8F%AF%E4%BB%A5.)
求出一堆数中和等于m的所有可能组合 JAVA输入两个整数 n 和 m,从数列1,2,3.n 中 随意取几个数,使其和等于 m ,要求将其中所有的可能组合列出来.最好是用JAVA写,告诉思路也可以.
求出一堆数中和等于m的所有可能组合 JAVA
输入两个整数 n 和 m,从数列1,2,3.n 中 随意取几个数,使其和等于 m ,要求将其中所有的可能组合列出来.
最好是用JAVA写,告诉思路也可以.
求出一堆数中和等于m的所有可能组合 JAVA输入两个整数 n 和 m,从数列1,2,3.n 中 随意取几个数,使其和等于 m ,要求将其中所有的可能组合列出来.最好是用JAVA写,告诉思路也可以.
这题费了老劲了,可用递归来做.原理我就不说了,能看明白就看吧.算法如下(可能算法不优):
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Test {
static List printUnique = new ArrayList();
public static void main(String[] args) {
cal(18,20,new ArrayList());
System.out.println(" 组合结果");
for(List result :printUnique){
for(Integer num :result){
System.out.print(num + " ");
}
System.out.println("");
}
}
public Test(){
}
public static void cal(Integer maxNum,Integer result,List chain){
if(result>=2 * maxNum) return;
if(result maxNum){
minNum = result - maxNum;
}
if(result == maxNum){
minNum = 1;
maxNum = maxNum -1;
}
if(result