Java 了解按位条件检查以获取数组中所有可能的组合和
我得到了一个算法,其目标是给出整数数组中所有组合的所有可能和Java 了解按位条件检查以获取数组中所有可能的组合和,java,bit-manipulation,bitwise-operators,bit-shift,bitwise-and,Java,Bit Manipulation,Bitwise Operators,Bit Shift,Bitwise And,我得到了一个算法,其目标是给出整数数组中所有组合的所有可能和 private void arraySumPermutation(int value ,int[] arr){ int N = arr.length; for(int i=0;i<1<<N;i++){ int sum = 0; for(int j=0;j<N;j++){ if((i
private void arraySumPermutation(int value ,int[] arr){
int N = arr.length;
for(int i=0;i<1<<N;i++){
int sum = 0;
for(int j=0;j<N;j++){
if((i & 1<<j)>0){
iCount++;
sum += arr[j];
//S.O.P(sum);
}
}
}
}
我无法理解添加了按位AND的内部if条件。
内部if循环的目标是什么
if((i & 1<<j)>0)
让我们将N元素集的组合表示为N位数字,其中,如果组合中包含第j项,则第j位为1,否则为0。这样,您可以将所有可能的组合表示为[0,2N]范围内的数字
外部循环迭代这些数字1让我们将N元素集的组合表示为N位数字,其中,如果组合中包含第j项,则第j位为1,否则为0。这样,您可以将所有可能的组合表示为[0,2N]范围内的数字 外部循环迭代这些数字1