코딩공작소

[백준]일곱난쟁이 본문

알고리즘/그리디&완탐

[백준]일곱난쟁이

안잡아모찌 2019. 8. 20. 18:59

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

 

2309번: 일곱 난쟁이

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

www.acmicpc.net

9명의 난쟁이를 7명을 선택해서 키가 100인것을 찾아서 정렬후 출력하는 문제

 

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
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
 
vector<int> a(9);
vector<int> b;
bool isV[9];
bool sss = false;
 
void solve(int s,int len) {
    if(sss == truereturn;
    if(len == 7) {
        int aa = 0;
        for (int i = 0; i < 9; i++) {
            if (isV[i] == true) aa += a[i];
        }
        
        if (aa == 100) {
            sss = true;
            for (int i = 0; i < 9; i++) {
                if (isV[i] == true) b.push_back(a[i]);
            }
        }
        return;
    }
 
    for (int i = s; i < 9; i++) {
        if (isV[i] == false) {
            isV[i] = true;
            solve(i,len + 1);
            isV[i] = false;
        }
    }
}
 
int main()
{
    for (int i = 0; i < 9; i++cin >> a[i];
 
    solve(00);
    sort(b.begin(), b.end());
    for (int i = 0; i < 7; i++printf("%d\n", b[i]);
 
    return 0;
}
cs