0,1,2,3,4,5,6,7,8,9,这10个数任意5个相加和值等于18.怎么计算有多少注.不考虑重复!

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/28 12:33:30

0,1,2,3,4,5,6,7,8,9,这10个数任意5个相加和值等于18.怎么计算有多少注.不考虑重复!
0,1,2,3,4,5,6,7,8,9,这10个数任意5个相加和值等于18.怎么计算有多少注.
不考虑重复!

0,1,2,3,4,5,6,7,8,9,这10个数任意5个相加和值等于18.怎么计算有多少注.不考虑重复!
共14种
分别是
96210 95310 94320 87210 86310 85410 85320
84321 76410 76320 75420 75321 65430 65421
没有计算过程,就是从大数往小数找
经过VC程序验证是14种

一共只有一注啊,最小的五个数加起来十五,次之的五个数加起二十,所以最多只有一注!

java验证过
如果不考虑重复,一共有1680种
如果考虑重复,就14种
01269 01278 01359 01368 01458 01467 02349 02358 02367 02457 03456 12348 12357 12456
代码如下
import java.util.ArrayList;
import java.util.Arra...

全部展开

java验证过
如果不考虑重复,一共有1680种
如果考虑重复,就14种
01269 01278 01359 01368 01458 01467 02349 02358 02367 02457 03456 12348 12357 12456
代码如下
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
public class MathUtil {
public static void main(String[] args) {
int[] ary = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
Set set = new TreeSet();
List list = new ArrayList();

int count = 1;
for(int i = 0; i < ary.length; i++){
for(int j = 0; j < ary.length; j++){
if(j != i){
for(int k = 0; k < ary.length; k++){
{
if(k != i && k != j){
for(int m = 0; m < ary.length; m++){
if( m != i && m != k && m != j){
for(int n = 0; n < ary.length; n++){
if(n != i && n != j && n != k && n != m){
if(ary[i] + ary[j] + ary[k] + ary[m] + ary[n] == 18){

list.add("" + ary[i] + ary[j] + ary[k] + ary[m] + ary[n]);

int[] newAry = {ary[i], ary[j], ary[k], ary[m], ary[n]};
Arrays.sort(newAry);

StringBuffer sb = new StringBuffer();
for(int item: newAry){
sb.append(item);
}

set.add(sb.toString());
count++;
}
}
}
}

}
}
}

}

}
}
}

for(String item: set){
System.out.print(item + " ");
}

System.out.println("\nTotal 考虑重复一共有" + set.size());
System.out.println("\nTotal: 不考虑重复,一共有" + list.size());
}
}

收起