문제에서 "최소 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은 알파벳이고, 처음에 입력받은 알파벳들은 정렬 후 사용했다. (사전순 출력을 위해)
댓글 없음:
댓글 쓰기