Algorithm

[#1]완전탐색-n개의 원소 중 m개를 고르는 모든 조합을 찾는 알고리즘

반응형

일주일 만에 겨우 한 단원을 끝냈다.

말도 안 되는 공부 효율성이다.

일단 이 책을 읽는 순간 나의 두뇌에 대한 남 탓과 자괴감이 동시에 생기며 분노가 차오른다.

하지만 변태적 성향인지 이 책을 읽는 동안 재미가 없었던 순간이 없었고 끝까지 읽을 수 있을 거라는 확신이 든다.

(시간에 대한 효율성은...)

 

이 단원에서는 완전탐색을 다루며 전체적으로 재귀 함수의 사용법과 시력을 향상한다.

사고 향상에 엄청난 도움을 주었다.

 

첫 번째 문제 n개의 원소 중 m개를 고르는 모든 조합을 찾는 알고리즘이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include<iostream>
#include<vector>
#include<ctime>
using namespace std;




void printPicked(vector<int>& picked)
{
    for (int i = 0; i < picked.size(); i++)
    {
        cout << picked[i] << " "
        
    }
    cout << endl;
}


void pick(int n, vector<int> &picked, int toPick)
{
    if (toPick == 0)
    { 
        printPicked(picked); 
        return
    }
    int smallest = picked.empty() ? 0 : picked.back() + 1;
    for (int next = smallest; next < n; ++next)
    {
        picked.push_back(next);
        pick(n, picked, toPick - 1);
        picked.pop_back();
    }


}


int main(int agrc, char*argv[])
{
    vector<int> picked;


    pick(4, picked, 2); //0 1 2 3 중 2개씩 묶겠다.


}
Colored by Color Scripter
cs

처음에 백터로 다른 원소들을 먼저 초기화 한 후 정렬하는 문제라고 생각해서 삽질을 너무 심하게 해서 정말 시간이 아까웠다.

문제가 이해가 안 가면 더 읽도록 하자..

 

반응형