[백준] 3980 선발 명단 - Java
재귀의 basis 조건은 11명을 모두 뽑았을 때이다.
선수의 능력치가 0이 아니면 뽑고, 백트래킹을 돌려서 모든 경우를 탐색하자.
백트래킹은 정말 많이 풀어봐야 한다.
개념은 알지만 활용하는게 쉽지 않은 단원..
import java.util.*;
import java.io.*;
import java.math.*;
public class Main {
static int TC;
static int[][] map;
static boolean[] visit;
static int ans;
static StringBuilder sb = new StringBuilder();
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
TC = Integer.parseInt(br.readLine());
while(TC-- > 0){
map = new int[11][11];
visit = new boolean[11];
ans = 0;
for(int i=0; i<11; i++){
StringTokenizer st = new StringTokenizer(br.readLine());
for(int j=0; j<11; j++){
map[i][j] = Integer.parseInt(st.nextToken());
}
}
bt(0,0);
sb.append(ans + "\n");
}
System.out.println(sb);
}
static void bt(int num, int sum){
if(num == 11){
ans = Math.max(ans, sum);
return;
}
for(int i=0; i<11; i++){
if(!visit[i] && map[num][i] != 0){
visit[i] = true;
bt(num + 1, sum + map[num][i]);
visit[i] = false;
}
}
}
}
반응형
'Algorithm > Baekjoon' 카테고리의 다른 글
[백준] 17136 색종이 붙이기 - Java (0) | 2022.08.17 |
---|---|
[백준] 6443 애너그램 - Java (0) | 2022.08.17 |
[백준] 1325 효율적인 해킹 - Java (0) | 2022.08.14 |
[백준] 1600 말이 되고픈 원숭이 - Java (0) | 2022.08.13 |
[백준] 16235 나무 재테크 - Java (0) | 2022.08.13 |
댓글
이 글 공유하기
다른 글
-
[백준] 17136 색종이 붙이기 - Java
[백준] 17136 색종이 붙이기 - Java
2022.08.17 -
[백준] 6443 애너그램 - Java
[백준] 6443 애너그램 - Java
2022.08.17 -
[백준] 1325 효율적인 해킹 - Java
[백준] 1325 효율적인 해킹 - Java
2022.08.14 -
[백준] 1600 말이 되고픈 원숭이 - Java
[백준] 1600 말이 되고픈 원숭이 - Java
2022.08.13