백준 5568번: 카드 놓기

danbibibi·2022년 1월 7일
0

문제

문제 바로가기> 백준 5568번: 카드 놓기

풀이

중복을 방지하기 위해 조합을 사용하였고, 재귀를 이용한 brueforce방식으로 문제를 풀이하였다.

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

int n, k;
int card[11]={};
bool visit[11]={false};
set<string> s;

void backtracking(int index, string numStr){
    if(index==k){
        s.insert(numStr);
        return;
    }
    for(int i=0; i<n; i++){
        if(visit[i]==false){
            visit[i] = true;
            backtracking(index+1, numStr+to_string(card[i]));
            visit[i] = false;
        }
    }
}

int main(){
    ios_base::sync_with_stdio(false); cin.tie(NULL);
    cin>>n>>k;
    for(int i=0; i<n; i++) cin>>card[i];
    backtracking(0, "");
    cout << s.size();
}
profile
블로그 이전) https://danbibibi.tistory.com

0개의 댓글