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);
    }
}

'Algorism > 개념' 카테고리의 다른 글

알고리즘 - 유니온파인드, 서로소집합 (Unionfind)  (1) 2024.01.05
복사했습니다!