백준 algorithm

백준 15650 - N과 M(2)

cosmohoo 2020. 6. 3. 21:23
반응형

문제 설명

 

 

 

=> 브루트 포스 문제입니다. 

=> 기존의 N과 M문제에서 힌트를 받아 풀 수 있습니다. 

=> 오름차순으로 해야되는 것만 염두에 두면 풀 수 있습니다. 

 

https://codingham.tistory.com/41

 

백준 15649 - N과 M(1)

백트래킹과 관련된 기초 문제이다. 본인은 백트레킹의 개념은 알지만 코드로 구현함에 있어 어려움을 겪어, 다른 사람들의 코드를 보며 썼다. 길이가 M이므로, cnt가 M이 될때까지 해당 Backtracking

codingham.tistory.com

=> 위의 문제를 참조하면 쉽게 풀 수 있습니다. 

 

 

 

 

 

 

 

 

<code>


#include <iostream>
#include <algorithm>
#include <string>

bool visited[10]; //false로 초기화
int arr[10];

using namespace std;

void find(int index, int start, int N, int M)
{
    if(index == M)
    {
        for(int i=0; i<M; i++)
        {
            cout << arr[i] <<" ";
        }
        cout<<'\n';
    }
    
    for(int i=start; i<=N; i++)
    {
        if(visited[i])continue;
        visited[i] = true;
        arr[index] = i;
        find(index+1, i+1, N, M);
        visited[i] =false;
    }
}

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
    
    int N, M;
    cin >> N >> M;
    
    find(0,1,N, M);

    return 0;
}

 

 

 

 

 

실행 화면 1
실행 화면 2

 

 

 

반응형