PSNote/Problem Solving [BOJ-6603]로또 WONDY 2018. 5. 25. 23:46 https://www.acmicpc.net/problem/6603 입력된 수의 갯수 중 6개의 집합들을 출력하는 문제 [문제풀이] Click접기 DFS로 풀이하였다.DFS(depth=선택한 수 갯수, next=다음수)선택한 수의 갯수가 6개가 되면 출력하면 된다. 접기 [C++ source code]Click접기 1234567891011121314151617181920212223242526272829303132333435363738// BOJ-6603#include<iostream>#define D 6int num[55];bool vis[55];int N; void dfs(int depth, int next) { if (depth > D) return; if (depth == D) { for (int i = 0; i < N; i++) { if (vis[i]) printf("%d ", num[i]); } puts(""); return; } for (int i = next+1; i < N; ++i) { if (vis[i]) continue; vis[i] = true; dfs(depth+1, i); vis[i] = false; }} int main() { int line = 0; while (true) { scanf("%d", &N); if (N == 0) break; else if(line) puts(""); for (register int i = 0; i < N; ++i) { scanf("%d", &num[i]); } // input dfs(0, -1); line++; } return 0;}Colored by Color Scriptercs 접기 저작자표시 (새창열림)