请问在java中,怎么计算一个数组里最多可能的n个数相加的集合,n=1,2,....一直到数组的长度 10

比如说,一个数组[2,2,3]的结果应该是[2,3,4,5,7]在数组中一个数相加时候,也就是数组本身是[2,2,3],数组中两两相加的可能结果有[4,5],三个数都相加... 比如说,一个数组[2, 2 , 3]的结果应该是[2,3,4,5,7]
在数组中一个数相加时候,也就是数组本身是[2,2,3],数组中两两相加的可能结果有[4,5],三个数都相加的结果是[7],整合起来,不算重复的结果就是[2,3,4,5,7].只写下算法就行,不用具体程序,谢谢
展开
 我来答
骑仕猎人
2012-04-25 · TA获得超过343个赞
知道小有建树答主
回答量:386
采纳率:100%
帮助的人:208万
展开全部
//做是做出来了,挺麻烦,且没做大量的验证,看得懂再说吧
import java.util.TreeSet;

public class AddCount {
public static void main(String[] args) {
int[] a={2,2,3};
addadd(a);
System.out.println(ts.toString());
}

private static void addadd(int[] a) {
diadd(0,2,a);//这里是特殊处理两两相加
diadd(0,a.length,a);
}

static TreeSet ts = new TreeSet();//有序不重复
static void diadd(int sdf, int cou, int[] a){
if(cou>2){
for(int i=0;i<a.length;i++){
sdf = a[i];
ts.add(sdf);
// System.out.println(ts.toString());
int[] b = new int[a.length-1];
for(int j=0;j<a.length;j++){
if(j<i)
b[j]=a[j];
if(j>i)
b[j-1]=a[j];
}
//a = Arrays.copyOf(a, a.length-1);
diadd(sdf,cou-1,b);
}
}else{
for(int i=0;i<a.length;i++){
int tem = sdf + a[i];
for(int j=0;j<a.length;j++){
if(j!=i)
ts.add(tem+a[j]);
}
}
// System.out.println(ts.toString());
}
}
}
专揭防伪商标
2012-04-25 · TA获得超过139个赞
知道小有建树答主
回答量:203
采纳率:0%
帮助的人:109万
展开全部
感觉存储结果的话用map好一些,不用担心重复。
那就只剩下计算,数组循环就能办到了,把结果统统map.put(key, val);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式