귀염둥이의 메모

[백준] 15666번: N과 M (12) (C++) 본문

CS/백준

[백준] 15666번: N과 M (12) (C++)

겸둥이xz 2021. 4. 10. 22:57
반응형

 

www.acmicpc.net/problem/15666

 

15666번: N과 M (12)

한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해

www.acmicpc.net

 

 

소스코드

#include <bits/stdc++.h>
using namespace std;

int n, m;
int arr[7];
int vis[7];
int result[7];

void dfs(int k, int start) {
    if (k == m) {
        for (int i = 0; i < m; i++)
            cout << result[i] << ' ';
        cout << '\n';
        return;
    }

    int pr = 0;
    for (int i = start; i < n; i++) {
        if (pr != arr[i]) {
            pr = arr[i];
            result[k] = arr[i];
            dfs(k + 1, i);
        }
    }
}

int main(void) {
    ios::sync_with_stdio(0);
    cin.tie(0);

    cin >> n >> m;
    for (int i = 0; i < n; i++)
        cin >> arr[i];
    sort(arr, arr + n);
    dfs(0, 0);

    return 0;
}
반응형
Comments