结果填空:礼物盒
思路
对每个盒子排序后贪心搜索,注意题意要求
import java.util.Arrays;
class Main {
static int ans = 0;
static int[] a = {11,8,11,16,1,2,6,10,17,10,6,5,2,19,4,7,
5,5,15,3,15,11,9,17,9,4,10,12,17,19,20,11,10,20,3};
public static void main(String[] args) {
boolean[] b = new boolean[40];
Arrays.sort(a, 0, a.length);
dfs(0, 0, b);
}
private static void dfs(int n, int sum, boolean[] b) {
if(sum == 100) {
for(int i=0; i<35; i++) {
if(b[i])ans ++;
}
System.out.println(ans);
System.exit(0);
}
if(sum > 100) return ;
for(int i=n; i<35; i++) {
b[i] = true;
dfs(i+1, sum+a[i], b);
b[i] = false;
}
}
}
/*
11 3
8 12
11 17
16 13
1 14
2 8
6 10
10 18
17 11
10 15
6 14
5 6
2 19
19 10
4 9
7 9
5 14
5 20
15 19
3 17
15 11
11 20
9 12
17 4
9 19
4 18
10 10
12 19
17 3
19 9
20 16
11 16
10 2
20 15
3 14
*/