스트링 재조합 모든 경우 출력하기

  • Jaekwan
    Jaekwan

    매우 긴 문자열이 주어졌다면 가능한 재조합 어떻게 구해야 하죠?
    중복된 문자들이 있다면 중복처리를 해야합니다.

    가령,
    [a,d,d] 가 있다면

    add,
    dad,
    dda
    만 출력해야 하는 것이지요.

    [a,a,a,a,b,b,c,c,d,d,d] 이런식으로 문제가 주어진다면 어떤 식으로 루프/재귀를 돌려보아야 할까요?


    10년 전
2개의 댓글이 있습니다.
  • kriii
    kriii

    next_permutation함수를 사용하세요.

    #include <iostream>
    #include <algorithm>
    #include <string>
    using namespace std;
    
    int main()
    {
        string input = "add";
    
        sort(input.begin(),input.end());
        do{
            cout << input << endl;
        }while (next_permutation(input.begin(),input.end()));
    
        return 0;
    }
    

    10년 전 link
  • Jaekwan
    Jaekwan

    호곡 감사합니다!!!!!


    10년 전 link
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.