공부혜옹

백준 15666 N과 M (12) 본문

공부합시다/Algorithm

백준 15666 N과 M (12)

Blair06 2021. 11. 16. 20:02

https://hae-ong.tistory.com/89?category=883090 

 

백준 15663 N과 M (9)

https://hae-ong.tistory.com/88 백준 15657 N과 M (8) 재귀를 이용해 모든 수의 조합을 구하면 되는 문제였다. 단, 수열의 길이제한이 있으므로 해당 조건은 탈출조건으로 설정한다 #include #include #include #..

hae-ong.tistory.com

15663을 풀었다면 더할나위없이 쉬운 문제이다.

15663을 포스팅할 당시 '중복선택이 안되는 부분은 visited라는 배열로 체크해주었다' 라고했는데 이번 문제는 중복선택이 되고, 중복수열만 제한하면 되는 문제였기 때문에 visited로 검사하는 조건을 삭제했다.

#include <iostream>
#include <algorithm>
#include <set>
#include <vector>
using namespace std;

int n, m;
int arr[9];
int ans[9];
int visited[9];



void func(int index,int cnt){
    if(cnt == m) {
        for(int i=0; i<m; i++){
            cout << ans[i] << " ";
        }
        cout << endl;
        return;
    }
    int prev =0;
    for(int i = index; i < n;i++){
        if(prev != arr[i]){
            ans[cnt] = arr[i];
            prev = ans[cnt];
            func(i,cnt+1);
        
        }
        
    }
    
  
}
int main(void){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cin >> n >> m;
   
    for(int i=0; i<n; i++) {
        cin >> arr[i];
    }
    sort(arr,arr+n);
    func(0,0);
   

    return 0;
}
반응형
Comments