Problem Solving/BOJ

[백준 15656번] [Backtracking] N과 M (7)

  • -
728x90
반응형

Approach

기본적인 접근 방법은 https://viyoung.tistory.com/283.과 동일하다.

 

[백준 15655번] [Backtracking] N과 M (6)

Approach 문제에서 요구한 조건이 내림차순이라는 조건이 있으므로, 정렬한 상태에서 몇 번째 index를 고려하고 잇는지와 몇 번째 자리까지 채웠는지를 판단해야 한다. 따라서 각 변수를 함수의 인

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;
vector<int> v;
int N, M;
int result[8];

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

int main(void)
{
    fastio;
    memset(result, 0, sizeof(result));
    cin >> N >> M;

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

    sort(v.begin(), v.end());
    for (int i = 0; i < N; i++)
    {
        solve(i, 0);
    }
    return 0;
}
반응형
Contents

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

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