728x90

https://www.acmicpc.net/problem/2309

 

2309번: 일곱 난쟁이

아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다.

www.acmicpc.net

#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

+ Recent posts