algorithm
부분집합
코드와이
2021. 2. 5. 10:50
부분집합 1
1, 2, 3 을 갖고 만든 부분 집합으로 재귀를 사용.
[1, 2, 3], [1, 2], [1, 3], [1], [2, 3], [2], [3], [] 을 출력.
package week0201_0205;
public class 부분집합 {
static boolean[] isSelected = new boolean[3];
static int[] arr = {1,2,3};
public static void main(String[] args) {
func(0);
}
public static void func(int idx) {
if(idx == 3) {
for(int i = 0 ; i < 3 ; i++) {
if(isSelected[i]) {
System.out.print(arr[i]+ " ");
}
}
System.out.println();
return;
}
isSelected[idx] = true;
func(idx+1);
isSelected[idx] = false;
func(idx+1);
}
}
<실행결과>
부분집합 2
1, 2, 3 을 갖고 만든 부분 집합으로 bit 이동으로 비교.
[], [1], [2], [1, 2], [3], [1, 3], [2, 3], [1, 2, 3] 을 출력.
package week0201_0205;
public class 부분집합2 {
public static void main(String[] args) {
int[] arr = {1,2,3};
for(int i = 0 ; i < 8 ; i++) {
for(int j = 0 ; j < 3 ; j++) {
if((i & (1 << j)) > 0) {
System.out.print(arr[j]);
}
}
System.out.println();
}
}
}
<실행결과>