<Baekjoon> #6603 DFS_로또 c++
vector생성
먼저 49가지 수 중 k개의 수를 골라 담을 벡터vector<int> lotto를 만들고 k개중 6개를 뽑아서 넣을vector<int> ans(N)를 만듦
int start, int depth
dfs 함수를 반복하는데start, depth인자를 둔다.start는vector<int> lotto의 index,depth는vector<int> ans의 index다.
즉depth는 이때까지 뽑힌 로또의 개수이다. 당연히 6개를 넘을 수 없으며i는start부터k까지 반복한다.e.g.
k=7 ,lotto={1,2,3,4,5,6,7}일 때
depth==6일 때는ans를 출력하고 종료한다.if (depth == N) { for (int i = 0; i < N; i++) cout<< ans[i] << " "; cout << "\n"; return; }
전체 코드
#include <iostream> #include <vector> const int N = 6; using namespace std; vector<int> ans(N); vector<int> lotto; void dfs(int start, int depth, int k) { if (depth == N) { for (int i = 0; i < N; i++) cout<< ans[i] << " "; cout << "\n"; return; } for (int i = start; i < k; i++) { ans[depth] = lotto[i]; dfs(i + 1, depth + 1, k); } } int main() { int k; while (1) { cin >> k; if (k == 0) break; lotto = vector<int>(k); for (int i = 0; i < k; i++) cin >> lotto[i]; dfs(0, 0, k); cout << endl; } return 0; }
Author And Source
이 문제에 관하여(<Baekjoon> #6603 DFS_로또 c++), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@kimmy/Baekjoon-6603-BFS로또-c저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)