11 条题解
-
0
其实很简单 设置一个最小值,每次递归都更新这个最小值,要是时间超过这个最小值直接全部return
import java.util.List; import java.util.Scanner; public class 海贼王之伟大航路 { static List<Integer> list = new ArrayList<>();static int year=0;static int min = Integer.MAX_VALUE; static int []vis ;static int[][] step;static int[]dist;static int [][]island; static int time=0; public static void main(String[] args) { Scanner inputScanner = new Scanner(System.in); int num = inputScanner.nextInt(); island = new int[num+1][num+1]; vis = new int[num+1]; step = new int[num+1][num+1]; dist = new int[num + 1]; for (int i = 1; i <= num; i++) { for (int j = 1; j <= num ; j++) { island[i][j]=inputScanner.nextInt(); //i到j岛屿距离 } } vis[1]=1; //初始点已经走过 dfs(island,1,1); for(int i=0;i<list.size();i++) { if(list.get(i)<min) { min=list.get(i); } } System.out.println(min); } private static void dfs(int[][] island,int count,int index) { if(year>min) return; // TODO Auto-generated method stub if(count==island.length-1&&index==island.length-1) { min=Math.min(year,min); } for (int i = 1; i < island.length; i++) { if(island[index][i]!=0&&vis[i]!=1) { year+=island[index][i]; vis[i]=1; dfs(island,count+1,i); vis[i]=0; year-=island[index][i]; } } } }
信息
- ID
- 80
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- 递交数
- 367
- 已通过
- 87
- 上传者