/* 로또문제풀이 안보고 풀이, dfs 로 완전 탐색해야합니다. 자 보면 1 2 3 4 5 6 7 을받습니다. 받고 나서 순서를 파악해보도록 하겠습니다. 1 2 3 4 5 6 1 2 3 4 5 7 1 2 3 4 6 7 1 2 3 5 6 7 1 2 4 5 6 7 1 3 4 5 6 7 2 3 4 5 6 7 고하는 것 하나랑 제어하는 것 하나 이렇게 입력으로 들어갑니다. */ #include <iostream> using namespace std; int k; int numArr[15]; int visit[10]; void dfs(int pos, int depth) { if (pos == k && depth == 6) { for (int i = 0; i < k; i++) { if (visit[i] == 1) { cout << numArr[i] << " "; } } cout << endl; } if (pos == k) return; visit[pos] = 1; dfs(pos + 1, depth + 1); visit[pos] = 0; dfs(pos + 1, depth); return; } void problemIn() { for (int i = 0; i < k; i++) { cin >> numArr[i]; } dfs(0, 0); } int main() { while (1) { cin >> k; if (k == 0) break; else { problemIn(); cout << endl; } } return 0; } |
풀이풀이. 기존의 답을 참고해서 기억해내서 풀었습니다. 여기서 알아야할 것은 dfs 는 처음에 0,0 으로 들어가는것이 보통이고, 다른 것을 넣어도 상관없습니다. 그리고 완전탐색할 수 있음을, 그리고 재귀로 풀어야 하는것을 기억합니다. 나와야하는 return문 그리고 조건을 모두 만족했을 때 출력해야하는 것들을 주의해서 풀이하도록 합니다. 오께이 |