https://www.acmicpc.net/problem/2309
#include <stdio.h>
#include <algorithm>
using namespace std;
int arr[10] = { 0, }; // 입력값 담을 배열
bool visited[10] = { 0, }; // 뺐는지 체크
int answer[7] = { 0, }; // 정답 7개 원소 담을 배열
void getResult(int x) { // x번째를 빼는 재귀 함수
if (x >= 3) {
int sum = 0;
for (int i = 1; i <= 9; i++) {
if (visited[i] == false)
sum += arr[i];
}
if (sum == 100) {
int index = 0;
for (int i = 1; i <= 9; i++) {
if (visited[i] == false) {
answer[index++] = arr[i];
}
}
return;
}
}
else {
for (int i = 1; i <= 9; i++) {
if (visited[i] == false) {
visited[i] = true;
getResult(x + 1);
visited[i] = false;
}
}
}
}
int main() {
for (int i = 1; i <= 9; i++) {
scanf("%d", &arr[i]);
}
getResult(1);
sort(answer, answer + 7);
for (int i = 0; i < 7; i++) {
printf("%d\n", answer[i]);
}
return 0;
}