Problem Solving/BOJ

[백준 15666번] [Backtracking] N과 M (12)

  • -
728x90
반응형

Approach

기본적으로 다음 문제와 거의 비슷하다. https://viyoung.tistory.com/288?category=884242 

 

[백준 15665번] [Backtracking] N과 M (11)

Approach 중복된 숫자의 입력을 제거해주면, https://viyoung.tistory.com/284?category=884242 문제와 완벽히 동일하다. [백준 15656번] [Backtracking] N과 M (7) Approach 기본적인 접근 방법은 https://viyou..

viyoung.tistory.com

다만, 비내림차순이라는 조건때문에 함수 내부의 반복문에서 자기 자신의 index부터 고려해주면 된다.

Code

#include <bits/stdc++.h>
#define fastio ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0)

using namespace std;
int result[8];
vector<int> s;
int n, m;

void solve(int index, int cur)
{
    result[cur++] = s[index];
    if (cur == m)
    {
        for (int i = 0; i < m; i++)
        {
            if (i != m - 1)
                cout << result[i] << " ";
            else
                cout << result[i] << "\n";
        }
        return;
    }
    else
    {
        for (int i = index; i < s.size(); i++)
            solve(i, cur);
    }
    return;
}

int main(void)
{
    fastio;
    cin >> n >> m;

    for (int i = 0; i < n; i++)
    {
        int t;
        cin >> t;
        s.push_back(t);
    }

    sort(s.begin(), s.end());
    s.erase(unique(s.begin(), s.end()), s.end()); // 중복 제거

    for (int i = 0; i < s.size(); i++)
    {
        solve(i, 0);
    }
    return 0;
}
반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.