문제에서 "최소 1개의 모음과 최소 2개의 자음" 이라는 부분을 놓쳐서 몇 번 틀렸다.
재귀함수는 아래와 같다.
void password( int cur, int k, int N, int C /*Consonant*/, int V /*Vowel*/ ){
if( k >= N && C > 1 && V > 0 ){
// 누적된 문자열 출력
return;
}// ....
}
글자수가 제한되어 있으니 재귀 호출의 깊이를 제한하면 된다.
깊이의 제한을 위해 k로 깊이를 인자로 넘기고, N은 문제에서 말한 암호의 길이이다.
cur은 알파벳이고, 처음에 입력받은 알파벳들은 정렬 후 사용했다. (사전순 출력을 위해)
댓글 없음:
댓글 쓰기