Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
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
Tags
more
Archives
Today
Total
관리 메뉴

혼종 꼬지마루

[백준] 3980 - 선발 명단 본문

Algorithms/Brute Force

[백준] 3980 - 선발 명단

꼬지마루 2018. 9. 14. 23:57

간만에 원큐에 푼 문제라 기분이 너무 좋다...


그냥 재귀로 싹다 돌려줘도 되는 문제


물론 전체 포지션을 다 고려한다고 했을 경우에는 O(11^11)이라 밥먹고 오면 풀릴 시간이지만


문제 조건이 '한명당 적합한 포지션은 최대 5개'라는 조건이 붙어 있어서 O(5^11) 까지 줄어드는 문제


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
#include <iostream>
#define SIZE 13
using namespace std;
 
int S[SIZE][SIZE];
bool check[SIZE];
int C, dab;
 
void dfs(int d, int sum)
{
    if (d == 11)
    {
        dab = dab > sum ? dab : sum;
        return;
    }
    for (int i = 0; i < 11; i++)
    {
        if (check[i] || !S[d][i]) continue;
        check[i] = true;
        dfs(d + 1, sum + S[d][i]);
        check[i] = false;
    }
}
 
int main(void)
{
    cin >> C;
    while (C--)
    {
        dab = 0;
        for (int i = 0; i < 11; i++)
        {
            check[i] = false;
            for (int j = 0; j < 11; j++)
                cin >> S[i][j];
        }
        dfs(00);
        cout << dab << "\n";
    }
    return 0;
}
cs

'Algorithms > Brute Force' 카테고리의 다른 글

[백준] 18192 - 보고 정렬  (0) 2019.12.15
[백준] 17136 - 색종이 붙이기  (6) 2019.04.07
[백준] 1421 - 나무꾼 이다솜  (0) 2018.08.27