728x90
https://www.acmicpc.net/problem/2309
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int arr[9];
int flag = false;
void combination(int num, vector<int> result, vector<bool> visited) {
if (flag) return;
if (num == 7) {
int total = 0;
for (int i = 0; i < 7; i++) {
total += result[i];
}
if (total == 100) {
flag = true;
for (int i = 0; i < 7; i++) {
cout << result[i] << endl;
}
}
return;
}
for (int i = 0; i < 9; i++) {
if (num == 0) {
if (!visited[i]) {
visited[i] = true;
result[num] = arr[i];
combination(num + 1, result, visited);
visited[i] = false;
}
}
else {
if (arr[i] > result[num - 1]) {
if (!visited[i]) {
visited[i] = true;
result[num] = arr[i];
combination(num + 1, result, visited);
visited[i] = false;
}
}
}
}
}
int main() {
for (int i = 0; i < 9; i++) {
cin >> arr[i];
}
sort(arr, arr + 9);
vector<int> result(7);
vector<bool> visited(9);
combination(0, result, visited);
return 0;
}
728x90
'알고리즘 문제' 카테고리의 다른 글
[백준] 2293번 동전 1 (0) | 2020.03.08 |
---|---|
[백준] 1057번 토너먼트 (0) | 2020.03.07 |
[백준] 3053번 택시 기하학 (0) | 2020.03.07 |
[백준] 1002번 터렛 (0) | 2020.03.07 |
[백준] 5543번 상근날드 (0) | 2020.03.07 |