-
백준 6603 (로또)컴퓨터 공학 기초/알고리즘 (브루트포스) 2020. 8. 19. 17:58
https://www.acmicpc.net/problem/6603
양수 K와 K 개수의 수열이 주어질 때 해당 수열로 만들 수 있는 조합을 출력하는 문제이다.
#include <iostream> #include <vector> using namespace std; int n; vector<int> nList; vector<int> results; int used[50]; void dfs(int level, int idx){ if (level == 6){ for (int i = 0; i < 6; ++i){ cout << results[i] << ' '; } printf("\n"); } for (int i = idx; i < n; ++i){ if (used[i] == 1) continue; used[i] = 1; results.push_back(nList[i]); dfs(level + 1, i + 1); results.pop_back(); used[i] = 0; } } int main(){ freopen_s(new FILE*, "tes.text", "r", stdin); while (1){ cin >> n; if (n == 0) return 0; int tmp; nList.clear(); for (int i = 0; i < n; ++i){ cin >> tmp; nList.push_back(tmp); } dfs(0, 0); printf("\n"); } }
'컴퓨터 공학 기초 > 알고리즘 (브루트포스)' 카테고리의 다른 글
백준 1182 (부분수열의 합) (0) 2020.08.20 백준 1759 (암호 만들기) (0) 2020.08.19 백준 10971 (외판원 순회 2) (0) 2020.08.19 백준 10819 (차이를 최대로) (0) 2020.08.19 백준 1476(날짜 계산) (0) 2020.08.19