永发信息网

求数组int [] a={2,3,1,5,4,8); 求元素相加和为10的所有组合,元素不重复的最简单的java代码

答案:1  悬赏:60  手机版
解决时间 2021-01-04 14:58
  • 提问者网友:蓝莓格格巫
  • 2021-01-04 05:05
求数组int [] a={2,3,1,5,4,8); 求元素相加和为10的所有组合,元素不重复的最简单的java代码
最佳答案
  • 五星知识达人网友:廢物販賣機
  • 2021-01-04 05:18
import java.util.Scanner;

public class SumOfSub {
int M,n;
int w[];
int x[];
int count=0;
public void sumofsub(int s,int k,int r){
x[k]=1;
if(s+w[k]==M){
count++;
for(int j=k+1;j<n;j++)
x[j]=0;
for(int i=0;i<n;i++)
if(x[i]==1)
System.out.print(w[i]+" ");
System.out.println();

}
else if(s+w[k]+w[k+1]<=M)
sumofsub(s+w[k],k+1,r-w[k]);
if(s+r-w[k]>=M&&s+w[k+1]<=M){
x[k]=0;
sumofsub(s,k+1,r-w[k]);
}
}
public SumOfSub(){
int r=0;
Scanner reader=new Scanner(System.in);
System.out.println("输入M和n:");
M=reader.nextInt();
n=reader.nextInt();
w=new int[n];
x=new int[n];
System.out.println("输入集合:");
for(int i=0;i<n;i++){
w[i]=reader.nextInt();
r=r+w[i];
}
sumofsub(0,0,r);
System.out.println("共有"+count+"种组合");
}
public static void main(String[] args) {
SumOfSub s=new SumOfSub();

}
}
//子集合数问题,这个程序可以测试你输入的所有集合的这类问题。
M为和 就是你题目中的10,n表示集合个数,输入集合 即你题目中的a的所有元素
我用程序运行了下你的题目 结果是:
2 3 5
2 8
1 5 4
共有3种组合
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯