JAVA简单程序


/**
* 求数值在 1 - 50 之内的任意个数之和为100 。
* 数值:1,2,3,4,5,6....48,49,50
* 取其中的任意个数,但这5个数相加之和要等于100,并将所有这种组合罗列
* 例: 1+10+19+20+50=100
* 3+14+16+27+40=100
*/


import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
* @author Administrator
*
*/
public class NumberSum {
//private List<String> list = new ArrayList<String>();
/**
* 返回在begin,end之间的count个数的和为sum
* @param begin
* @param end
* @param count
* @return
*/
public List sumList(int begin, int end, int count,int sum) {
if (count>=2) {
if (count == 2) {
List<String> listfirst = new ArrayList<String>();
for (int i=begin; i<=end; i++) {
if ((i < (sum-i)) && ((sum-i)<=end) && ((sum-i)>0)) {
String str = i + "," + (sum-i);
listfirst.add(str);
}

}
return listfirst;
} else {
count = count - 1;
List<String> listlast = new ArrayList<String>();
for (int j=end; j>=begin; j--) {
List<String> list = sumList(begin,end,count,sum-j);
List<String> sublist = new ArrayList<String>();
for (int k=0; k<list.size(); k++) {
String[] number = list.get(k).toString().split(",");
int max =0;
for (String num : number) {
if (max <= Integer.parseInt(num.trim())) {
max = Integer.parseInt(num.trim());
}
}

if (j>max) {
String str = list.get(k) + "," + j;
// list.set(k, str);
//} else {
//list.remove(k);
sublist.add(str);
}

}
listlast.addAll(sublist);
}
return listlast;
}
}
return null;
}

private void display(List list){
for (Object str : list) {
System.out.println(str + "sum = 100");
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
NumberSum obj = new NumberSum();
List list = obj.sumList(1, 50, 5, 100); //3 size 208 5size:18583
obj.display(list);
System.out.println("list size:" + list.size());

//数值在 1 - 50 之内的任意个数之和为100
// for (int count=3; count<=100; count++) {
// List list = obj.sumList(1, 50, count, 100);
// obj.display(list);
// System.out.println("list size:" + list.size());
// }
}

}


运行结果:

1,49,50sum = 100
2,48,50sum = 100
3,47,50sum = 100
4,46,50sum = 100
5,45,50sum = 100
6,44,50sum = 100
7,43,50sum = 100
8,42,50sum = 100
9,41,50sum = 100
10,40,50sum = 100
11,39,50sum = 100
12,38,50sum = 100
13,37,50sum = 100
14,36,50sum = 100
15,35,50sum = 100
16,34,50sum = 100
17,33,50sum = 100
18,32,50sum = 100
19,31,50sum = 100
20,30,50sum = 100
21,29,50sum = 100
22,28,50sum = 100
23,27,50sum = 100
24,26,50sum = 100
3,48,49sum = 100
4,47,49sum = 100
5,46,49sum = 100
6,45,49sum = 100
7,44,49sum = 100
8,43,49sum = 100
9,42,49sum = 100
10,41,49sum = 100
11,40,49sum = 100
12,39,49sum = 100
13,38,49sum = 100
14,37,49sum = 100
15,36,49sum = 100
16,35,49sum = 100
17,34,49sum = 100
18,33,49sum = 100
19,32,49sum = 100
20,31,49sum = 100
21,30,49sum = 100
22,29,49sum = 100
23,28,49sum = 100
24,27,49sum = 100
25,26,49sum = 100
5,47,48sum = 100
6,46,48sum = 100
7,45,48sum = 100
8,44,48sum = 100
9,43,48sum = 100
10,42,48sum = 100
11,41,48sum = 100
12,40,48sum = 100
13,39,48sum = 100
14,38,48sum = 100
15,37,48sum = 100
16,36,48sum = 100
17,35,48sum = 100
18,34,48sum = 100
19,33,48sum = 100
20,32,48sum = 100
21,31,48sum = 100
22,30,48sum = 100
23,29,48sum = 100
24,28,48sum = 100
25,27,48sum = 100
7,46,47sum = 100
8,45,47sum = 100
9,44,47sum = 100
10,43,47sum = 100
11,42,47sum = 100
12,41,47sum = 100
13,40,47sum = 100
14,39,47sum = 100
15,38,47sum = 100
16,37,47sum = 100
17,36,47sum = 100
18,35,47sum = 100
19,34,47sum = 100
20,33,47sum = 100
21,32,47sum = 100
22,31,47sum = 100
23,30,47sum = 100
24,29,47sum = 100
25,28,47sum = 100
26,27,47sum = 100
9,45,46sum = 100
10,44,46sum = 100
11,43,46sum = 100
12,42,46sum = 100
13,41,46sum = 100
14,40,46sum = 100
15,39,46sum = 100
16,38,46sum = 100
17,37,46sum = 100
18,36,46sum = 100
19,35,46sum = 100
20,34,46sum = 100
21,33,46sum = 100
22,32,46sum = 100
23,31,46sum = 100
24,30,46sum = 100
25,29,46sum = 100
26,28,46sum = 100
11,44,45sum = 100
12,43,45sum = 100
13,42,45sum = 100
14,41,45sum = 100
15,40,45sum = 100
16,39,45sum = 100
17,38,45sum = 100
18,37,45sum = 100
19,36,45sum = 100
20,35,45sum = 100
21,34,45sum = 100
22,33,45sum = 100
23,32,45sum = 100
24,31,45sum = 100
25,30,45sum = 100
26,29,45sum = 100
27,28,45sum = 100
13,43,44sum = 100
14,42,44sum = 100
15,41,44sum = 100
16,40,44sum = 100
17,39,44sum = 100
18,38,44sum = 100
19,37,44sum = 100
20,36,44sum = 100
21,35,44sum = 100
22,34,44sum = 100
23,33,44sum = 100
24,32,44sum = 100
25,31,44sum = 100
26,30,44sum = 100
27,29,44sum = 100
15,42,43sum = 100
16,41,43sum = 100
17,40,43sum = 100
18,39,43sum = 100
19,38,43sum = 100
20,37,43sum = 100
21,36,43sum = 100
22,35,43sum = 100
23,34,43sum = 100
24,33,43sum = 100
25,32,43sum = 100
26,31,43sum = 100
27,30,43sum = 100
28,29,43sum = 100
17,41,42sum = 100
18,40,42sum = 100
19,39,42sum = 100
20,38,42sum = 100
21,37,42sum = 100
22,36,42sum = 100
23,35,42sum = 100
24,34,42sum = 100
25,33,42sum = 100
26,32,42sum = 100
27,31,42sum = 100
28,30,42sum = 100
19,40,41sum = 100
20,39,41sum = 100
21,38,41sum = 100
22,37,41sum = 100
23,36,41sum = 100
24,35,41sum = 100
25,34,41sum = 100
26,33,41sum = 100
27,32,41sum = 100
28,31,41sum = 100
29,30,41sum = 100
21,39,40sum = 100
22,38,40sum = 100
23,37,40sum = 100
24,36,40sum = 100
25,35,40sum = 100
26,34,40sum = 100
27,33,40sum = 100
28,32,40sum = 100
29,31,40sum = 100
23,38,39sum = 100
24,37,39sum = 100
25,36,39sum = 100
26,35,39sum = 100
27,34,39sum = 100
28,33,39sum = 100
29,32,39sum = 100
30,31,39sum = 100
25,37,38sum = 100
26,36,38sum = 100
27,35,38sum = 100
28,34,38sum = 100
29,33,38sum = 100
30,32,38sum = 100
27,36,37sum = 100
28,35,37sum = 100
29,34,37sum = 100
30,33,37sum = 100
31,32,37sum = 100
29,35,36sum = 100
30,34,36sum = 100
31,33,36sum = 100
31,34,35sum = 100
32,33,35sum = 100
list size:208
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值