만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

연속 문자 제한 문자열

면접 대비

시간 제한1초메모리 제한128 MB

요약
각 입력 케이스에 대해 길이가 n이고 *와 !의 연속 출현 횟수가 제한 이하인 문자열을 *가 앞서는 사전 순으로 모두 출력합니다.
난이도

쉬움10점 중 3점

유형
백트래킹, 재귀, 문자열
정답자
아직 제출이 없습니다

문제

두 문자 * 와 ! 로만 이루어진 문자열을 다룹니다. 문자열의 길이가 정해져 있을 때, 다음 두 조건을 동시에 만족하는 문자열을 모두 나열하려고 합니다.

  • * 는 연속으로 최대 nstar 개까지만 올 수 있습니다.
  • ! 는 연속으로 최대 nbang 개까지만 올 수 있습니다.

문자열의 길이, * 의 최대 연속 개수, ! 의 최대 연속 개수를 입력받아 조건을 만족하는 모든 문자열을 사전순으로 출력하는 프로그램을 작성하세요. 이때 * 가 ! 보다 앞선다고 봅니다.

입력

입력은 여러 줄로 이루어집니다. 각 줄에는 세 정수 n, nstar, nbang 이 주어지며 1≤n≤101 \le n \le 10 입니다. 세 값이 모두 0 인 줄 (0 0 0) 이 나오면 입력이 끝나며, 그 줄은 처리하지 않습니다.

출력

입력 줄을 나온 순서대로 1 번부터 번호를 매깁니다. k 번째 줄에 대해 먼저 머리글 Sequence set k 를 출력하고, 이어서 길이가 n 이면서 * 가 연속으로 nstar 개를 넘지 않고 ! 가 연속으로 nbang 개를 넘지 않는 모든 문자열을 한 줄에 하나씩 출력합니다. 문자열은 * 가 ! 보다 앞서는 사전순으로 정렬합니다. 조건을 만족하는 문자열이 하나도 없으면 그 경우에는 머리글만 출력합니다.

예제3

  1. 예제 1

    입력
    1 1 1
    3 0 0
    2 10 1
    0 0 0
    
    예상 출력
    Sequence set 1
    *
    !
    Sequence set 2
    Sequence set 3
    **
    *!
    !*
    
  2. 예제 2

    입력
    3 1 1
    0 0 0
    
    예상 출력
    Sequence set 1
    *!*
    !*!
    
  3. 예제 3

    입력
    2 1 1
    0 0 0
    
    예상 출력
    Sequence set 1
    *!
    !*