ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • DFS - 부분집합구하기
    algorism 2020. 1. 12. 14:50

    숫자를 입력받고 그 수의 부분집합을 한칸씩 띄어주며 모두 구하라.

     

    #include<iostream>
    #include<vector>
    #include<algorithm>
    using namespace std;
    int n,ch[11];
    void D(int L)
    {
    	int i;
    	if (L == n + 1) {
    		for (i = 1; i <= n; i++)
    		{
    			if (ch[i] == 1)cout << i;
    		}
    		cout << endl;
    	}
    	else {
    		ch[L] = 1;
    		D(L + 1);
    		ch[L] = 0;
    		D(L + 1);
    	}
    }
    int main() {
    	cin >> n;
    	D(1);
    	return 0;
    }

     

    DFS는 트리형식으로 만들어 이해해야한다. 학부생때 보고 배우기만 했지 처음 구현해보는 알고리즘 구조라 이해하는데 정말 오래걸렸다. 지금도 이해는 가지만 응용하기에는 더 많은 공부가 필요할것같다. 따라서 난 이 알고리즘이 어떻게 함수를 호출하고 복귀하는지 보기쉽게 트리로만들어 그려보았다.

    본 알고리즘 동작 과정

    'algorism' 카테고리의 다른 글

    카드게임  (0) 2020.01.14
    가위바위보게임  (0) 2020.01.14
    재귀함수 - 2진수출력  (0) 2020.01.10
    재귀함수 알고리즘-STACK으로  (0) 2020.01.10
    소인수분해 응용2  (0) 2020.01.10
Designed by Tistory.