求一个比较菜的问题的解决方法,请好心人进来看看。在线等。 用java:整数1-33中间,任意取6个数,它们加起来的和是100.希望能得到有多少种组合,以及具体组合结果。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 public class Test { int[] array; int count=0; void showArray(){ String s = null; for(int i=0;i<array.length;i++) s=s+array[i]+","; System.out.println(s); } void checksum(int lefttime,int sum,int min,int max){ if(lefttime==0){ if(sum>=min&&sum<=max){ array[lefttime]=sum; System.out.println(array[0]+","+array[1]+","+array[2]+","+array[3]+","+array[4]+","+array[5]); count++; } return; } for(int i=min;i<=max;i++){ array[lefttime]=i; checksum(lefttime-1,sum-i,i,max); } } public static void main(String[] args) { // TODO Auto-generated method stub Test t=new Test(); t.array=new int[6]; t.checksum(5, 100, 1, 33); System.out.println("allcount:"+t.count); }}运行结果...17,17,17,17,17,1520,16,16,16,16,1619,17,16,16,16,1618,18,16,16,16,1618,17,17,16,16,1617,17,17,17,16,16allcount:42828 int num=0; for (int n1 = 1; n1 <= 14; n1++) { for (int n2 = n1+1; n2 <= 33; n2++) { for (int n3 = n2+1; n3 <= 33; n3++) { for (int n4 = n3+1; n4 <= 33; n4++) { for (int n5 = n4+1; n5 <= 33; n5++) { for (int n6 = n5+1; n6 <= 33; n6++) { if(n1+n2+n3+n4+n5+n6==100){ System.out.println(n1+"+"+n2+"+"+n3+"+"+n4+"+"+n5+"+"+n6+"=100"); num=num+1; break; } } } } } } } System.out.println("总共"+num+"组数字"); lip009(深蓝忧郁) 的 if(n1+n2+n3+n4+n5+n6==100)是否应再加上(n1!=n2&n2!=n3&n3!=n4&n4!=n5&n5!=n6)的判断? if(n1+n2+n3+n4+n5+n6==100 & n1!=n2&n2!=n3&n3!=n4&n4!=n5&n5!=n6)这样的结果才能做到每一位互不重复。 to: cpcyfun() ( ) 信誉:100 Blog 请看清楚我的每个循环的开始数字,是不会有重复值的! 请前辈们解答,小子我菜鸟一枚,虚心求教! 运行是看不见列表内容 大家讨论一下jdk5.0引入元数据的意义 问一个有关双缓冲的问题. 为什么小弟的SOCKET无法初始化啊,请看源码!谢谢各位,我是新来的,我多给分啊! 想学习JAVA 大家推荐几本书 请教有关JMF编程 怎么调试这个程序? 在applet里面如何得到本地(客户端)文件?急! 请介绍一下java 的混淆器的用法,如jade,joc等 请教递归 问一个非常菜的问题socket监听端口怎么判断客户端非法断开
public class Test {
int[] array;
int count=0;
void showArray(){
String s = null;
for(int i=0;i<array.length;i++)
s=s+array[i]+",";
System.out.println(s);
}
void checksum(int lefttime,int sum,int min,int max){
if(lefttime==0){
if(sum>=min&&sum<=max){
array[lefttime]=sum;
System.out.println(array[0]+","+array[1]+","+array[2]+","+array[3]+","+array[4]+","+array[5]);
count++;
}
return;
}
for(int i=min;i<=max;i++){
array[lefttime]=i;
checksum(lefttime-1,sum-i,i,max);
}
} public static void main(String[] args) {
// TODO Auto-generated method stub
Test t=new Test();
t.array=new int[6];
t.checksum(5, 100, 1, 33);
System.out.println("allcount:"+t.count);
}}运行结果
...
17,17,17,17,17,15
20,16,16,16,16,16
19,17,16,16,16,16
18,18,16,16,16,16
18,17,17,16,16,16
17,17,17,17,16,16
allcount:42828
for (int n1 = 1; n1 <= 14; n1++) {
for (int n2 = n1+1; n2 <= 33; n2++) {
for (int n3 = n2+1; n3 <= 33; n3++) {
for (int n4 = n3+1; n4 <= 33; n4++) {
for (int n5 = n4+1; n5 <= 33; n5++) {
for (int n6 = n5+1; n6 <= 33; n6++) {
if(n1+n2+n3+n4+n5+n6==100){
System.out.println(n1+"+"+n2+"+"+n3+"+"+n4+"+"+n5+"+"+n6+"=100");
num=num+1;
break;
}
}
}
}
}
}
}
System.out.println("总共"+num+"组数字");