package main;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.Arrays;
public class CompleteSearch {
private static int m = 3;
private static int[] arr = {1, 3, 5, 7};
private static boolean[] select;
private static int[] num;
public static void main(String[] args) throws Exception {
System.setIn(new FileInputStream("./input.txt"));
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
num = new int[m];
select = new boolean[arr.length];
subSet(0);
}
// 순열
static void permutation(int cnt) {
if(cnt == m) {
System.out.println(Arrays.toString(num));
return;
}
for (int i = 0; i < arr.length; i++) {
if (!select[i]) {
num[cnt] = arr[i];
select[i] = true;
permutation(cnt + 1);
select[i] = false;
}
}
}
// 중복 순열
static void duplicationPermu(int cnt) {
if (cnt == m) {
System.out.println(Arrays.toString(num));
return;
}
for (int i = 0; i < arr.length; i++) {
num[cnt] = arr[i];
duplicationPermu(cnt + 1);
}
}
// 조합
static void combine(int cnt, int idx) {
if(cnt == m ) {
System.out.println(Arrays.toString(num));
return;
}
for(int i = idx; i < arr.length; i++) {
num[cnt] = arr[i];
combine(cnt + 1, i + 1);
}
}
// 중복 조합
static void duplicationCombine(int cnt, int idx) {
if(cnt == m ) {
System.out.println(Arrays.toString(num));
return;
}
for(int i = idx; i < arr.length; i++) {
num[cnt] = arr[i];
duplicationCombine(cnt + 1, i);
}
}
// 부분 집합
static void subSet(int cnt) {
if(cnt == arr.length) {
System.out.println(Arrays.toString(select));
return;
}
select[cnt] = true;
subSet(cnt + 1);
select[cnt] = false;
subSet(cnt + 1);
}
}