본문 바로가기

algorithm

순열

#include 
#include 
#include 
using namespace std;
bool visit[1000000]; // 중복 확인!!
bool sel[10];

void go(int cnt, string number, string result){
    if(result != "" && visit[stoi(result)] == false){ // 빈 문자열이 아니거나 방문한적이 없으면
        int num = stoi(result);
        visit[num] = true;  // 중복을 방지하기 위해 true 설정
        cout << result << '\n';
    }
    for(int i = 0; i < number.length(); i++){ // 순열
        if(sel[i] == true) continue;
        sel[i] = true;
        go(cnt + 1, number, result + number[i]);
        sel[i] = false;
    }
}

int main() {
    string number = "123";
    go(0, number, "");
    return 0;
}

'algorithm' 카테고리의 다른 글

backjoon 10871번  (0) 2019.09.03