amjong   5년 전

a, c, i, n, t 5개를 제외하고

21개 중 K-5개를 뽑는 모든 경우의 수에 대해서

읽을 수 있는 단어의 수를 세서 그 중 최댓값을 취하는 방식으로 구현했는데요


21개 중 K-5개를 뽑는 모든 경우의 수는

단순하게 재귀호출로 구현했고

함수 호출 과정 도중에 현재 뽑은 알파벳의 정보는 

매개변수인 int check에 비트마스킹 형식으로 담았습니다.

(abc 배열에 제외할 알파벳들 제외한 

21개의 알파벳들을 넣어놓고(인덱스 0~20) 

해당 인덱스로 알파벳을 뽑았는지 안뽑았는지를 판별)

ex) check & (1 << 3) != 0 이면, abc[3]인 'f'를 뽑은 상태.

코드가 좀 난잡하긴 한데(ㅠㅠ) 도와주시면 감사하겠습니다.

amjong   5년 전

처음에 단어들 n개 입력받을 때

getline(cin, str);

로 받았었는데

cin >> str;

로 변경하니까 바로 해결됐습니다

(...)

댓글을 작성하려면 로그인해야 합니다.