当所需是一位数组,或者是数组的大小明显小于32位的话,用二进制循环的技巧可以代替DFS繁琐的步骤
for(int i = 0; i < (1 << n); i++) {
int total = 0, Min = INF, cnt = 0;for(int j = 0; j < n; j++) {
if(i >> j & 1) {
cnt++;
total += A[j];
Min = min(Min, A[j]);
}
}
}
当所需是一位数组,或者是数组的大小明显小于32位的话,用二进制循环的技巧可以代替DFS繁琐的步骤
for(int i = 0; i < (1 << n); i++) {
int total = 0, Min = INF, cnt = 0;}