백준 온라인 저지
백준 6603: 로또
dev_doyle
2018. 7. 18. 00:28
로또의 경우의 수를 출력해주면 되는 문제 0과 1을 이용해 조합을 만들고 역순으로 된 출력을 정방향으로 바꾸기 위해 벡터에 넣고 정렬해준다.
새로운 반복형식을 배운문제
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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | #include <iostream> #include <algorithm> #include <vector> using namespace std; int main() { int input; cin >> input; while (input != 0) { vector<int> lotto; vector<int> check; for (int i = 0; i < input; ++i) { int x; cin >> x; lotto.push_back(x); } for (int i = 0; i < input - 6; ++i) check.push_back(0); for (int i = 0; i < 6; ++i) check.push_back(1); vector<vector<int>> ans; do { vector<int> temp_ans; for (int i = 0; i < input; ++i) { if (check[i] == 1) { temp_ans.push_back(lotto[i]); } } ans.push_back(temp_ans); } while (next_permutation(check.begin(), check.end())); sort(ans.begin(), ans.end()); for (auto &v : ans) { for (int i = 0; i < v.size(); ++i) { cout << v[i] << " "; } cout << endl; } cin >> input; cout << endl; } return 0; } | cs |