-
[JAVA] 정올 1681 해밀턴 순환회로알고리즘 공부/문제 풀이 2021. 9. 23. 18:09
http://jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=954&sca=99&sfl=wr_hit&stx=1681
JUNGOL
www.jungol.co.kr
풀이
코드
import java.util.*; import java.io.*; public class Main { static int N; static int[][] map; static int answer = 10000; static boolean[] visit; public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); N = Integer.parseInt(br.readLine()); map = new int[N][N]; visit = new boolean[N]; for(int i=0;i<N;i++) { StringTokenizer st = new StringTokenizer(br.readLine()); for(int j=0;j<N;j++) map[i][j] = Integer.parseInt(st.nextToken()); } visit[0] = true; dfs(1, 0, 0); System.out.println(answer); } public static void dfs(int cnt, int select, int cost) { if(cnt==N) { if(map[select][0]==0) return; cost += map[select][0]; if(answer>cost) answer=cost; return; } if(cost> answer) return; for(int i=0;i<N;i++) { if(!visit[i] && map[select][i]!=0) { visit[i] = true; dfs(cnt+1, i, cost+map[select][i]); visit[i] = false; } } } }
'알고리즘 공부 > 문제 풀이' 카테고리의 다른 글
[JAVA] 백준 15993 1, 2, 3 더하기 8 (0) 2021.09.27 [JAVA] 백준 1755 숫자 놀이 (0) 2021.09.27 [JAVA] 백준 1786 찾기 (0) 2021.09.23 [JAVA] 백준 2042 구간 합 구하기 (0) 2021.09.22 [JAVA] 백준 17123 배열 놀이 (0) 2021.09.22