혼종 꼬지마루
[백준] 9997 - 폰트 본문
예전 삼성전자 SW Test A형을 딸 때 풀었던 문제랑 비슷해보여서 같은 방법으로 접근했다가 시간초과 났던 문제...
그래서 갯수에 상관없이 비트마스킹 + DFS를 사용하면 되는문제
순서에 상관이 없다는 말이 순서가 바껴도 같은 걸 사용하면 답의 갯수에 추가되는줄 알고 순열로 넣었다가 25!, 아니 예시인 9개에서도 시간초과
그래서 그냥 한 단어를 넣고, 안넣고 두가지 DFS로 문제 해결
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | #include <iostream> #include <cstring> using namespace std; int check[12], visit[12]; char A[102]; int N, com;; long long dab; void dfs(int d, int sum) { if (d == N - 1) { if (sum == com) dab++; return; } if (d + 1 < N) { dfs(d + 1, sum | check[d + 1]); dfs(d + 1, sum); } } int main(void) { cin >> N; for (int i = 0; i < 26; i++) com |= 1 << i; for (int i = 0; i < N; i++) { cin >> A; for (int j = 0; j < strlen(A); j++) check[i] |= (1<<(A[j] - 'a')); } dfs(-1, 0); cout << dab << endl; } | cs |
'Algorithms > DFS' 카테고리의 다른 글
[SWEA] 4223 - 삼성이의 트라우마 (0) | 2018.09.08 |
---|---|
[백준] 14889 - 스타트와 링크 (0) | 2018.09.07 |
[백준] 1208 - 부분집합의 합2 (0) | 2018.08.29 |
[백준] 15660 - 테트로미노(2) (1) | 2018.08.28 |
[백준] 14500 - 테트로미노 (0) | 2018.08.28 |