알고리즘 문제

알고리즘 문제) 순열 구하기

PJNull 2023. 7. 5.
728x90
반응형

문제

 

 

해결방법

 

DFS를 이용하여 모든 경우의 수를 구한다.

 

코드

 

int N, R,cnt=0;
vector<int>per;
vector<int>temp;
vector<bool>check;
void perDFS(int level)
{
    if (R == temp.size())
    {
        for (int i=0;i<R;i++)
        {
            cout << temp[i] << " ";
        }
        cout << endl;
        cnt++;
    }
    else
    {
        for (int i =0; i < N; i++)
        {
            if (check[i] == false)
            {
                check[i] = true;
                temp.push_back(per[i]);
                perDFS(i+1);
                temp.pop_back();
                check[i] = false;

            }
        }
        
        
    }
}


int main()
{
    int x;
    cin >> N>>R;
    check.resize(N,false);
    
    for (int i=0;i<N;i++)
    {
        cin >> x;
        per.push_back(x);
    }

   perDFS(0);

   cout << cnt;
}
728x90
반응형

'알고리즘 문제' 카테고리의 다른 글

알고리즘문제) 휴가(SW역량평가 기출)  (0) 2023.07.05
알고리즘 문제)2292번 벌집  (0) 2023.07.03
DFS)합이 같은 부분집합  (0) 2023.04.05
DFS)부분집합  (0) 2023.04.05

댓글