题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
中国的高铁四通八达,乘坐方便,小明经常乘坐高铁在城市间旅游。
现在,小明又有了一个长假,他打算继续乘坐高铁旅游。这次,他打算到下面的城市旅游。
上海、广州、长沙、西安、杭州、济南、成都、南京、昆明、郑州、天津、太原、武汉、重庆、南昌、长春、沈阳、贵阳、福州。
小明打算从北京出发,游览以上每个城市正好一次,最终回到北京。在每个城市(除北京外),小明都至少停留 24 小时。而当小明决定从一个城市去往另一个城市时,他只会选择有直接高铁连接的城市,不会在中途换乘转车。
下面是小明可以选择的车次,小明不会选择其他车次。
前面的车次号可以去掉
北京 上海 16:40 22:35
北京 上海 19:08 23:40
上海 北京 17:55 22:36
广州 北京 11:13 21:10
北京 广州 12:13 22:19
上海 广州 15:25 23:38
广州 上海 08:00 14:50
广州 长沙 21:00 23:36
长沙 广州 17:55 20:39
长沙 北京 07:36 14:24
北京 长沙 14:41 21:14
上海 长沙 15:37 20:59
长沙 上海 09:00 13:41
西安 上海 08:49 14:45
上海 西安 16:12 22:54
北京 西安 14:00 18:20
西安 北京 13:30 17:55
西安 广州 09:57 17:39
广州 西安 11:24 20:09
广州 杭州 15:56 23:25
杭州 北京 07:48 12:20
北京 杭州 19:04 23:22
上海 杭州 21:30 22:28
杭州 上海 07:06 08:12
济南 上海 06:50 11:40
北京 济南 19:55 21:55
济南 北京 07:45 09:33
广州 济南 08:05 18:34
济南 广州 10:14 20:49
成都 北京 07:00 14:46
北京 成都 06:53 14:38
成都 南京 11:28 22:00
上海 南京 10:05 11:29
南京 上海 08:00 09:39
南京 杭州 16:19 17:40
杭州 南京 12:09 13:30
昆明 南京 10:20 21:14
南京 昆明 09:05 19:40
成都 昆明 08:51 14:29
昆明 成都 12:16 17:57
昆明 郑州 08:46 18:48
郑州 昆明 10:38 20:49
郑州 西安 07:52 10:24
西安 郑州 08:10 10:29
西安 重庆 17:06 22:56
重庆 西安 07:05 12:37
重庆 成都 06:50 08:07
成都 重庆 22:12 23:29
天津 重庆 08:05 19:39
重庆 天津 10:49 22:45
北京 天津 22:10 22:45
天津 北京 19:08 19:46
天津 太原 10:40 14:15
太原 天津 14:43 18:12
太原 上海 12:26 21:17
上海 太原 08:10 17:28
郑州 太原 13:17 17:16
太原 郑州 17:38 21:38
太原 杭州 12:50 21:10
杭州 太原 07:14 15:50
北京 太原 08:40 11:07
太原 北京 08:33 11:00
太原 武汉 16:37 22:29
武汉 太原 09:48 16:00
武汉 上海 08:00 11:53
上海 武汉 13:51 17:50
西安 武汉 15:18 19:48
武汉 西安 09:17 14:27
天津 武汉 14:56 20:41
武汉 天津 14:30 20:32
长沙 天津 08:47 16:56
天津 长沙 10:58 18:50
长沙 太原 09:23 17:55
太原 长沙 10:46 18:18
杭州 昆明 11:43 22:53
昆明 杭州 09:06 20:18
昆明 南昌 16:00 22:54
南昌 昆明 08:25 15:38
南昌 杭州 12:24 15:28
杭州 南昌 12:30 15:26
济南 长春 07:42 15:07
长春 济南 15:33 22:35
沈阳 长春 06:42 08:40
长沙 长春 07:21 21:09
长春 长沙 08:47 22:08
长春 北京 08:32 14:48
北京 长春 15:20 21:45
南京 成都 08:07 17:54
南京 长沙 09:27 14:10
长沙 南京 15:53 20:40
贵阳 南京 07:58 18:02
南京 贵阳 12:07 21:58
长沙 贵阳 13:17 16:55
贵阳 长沙 08:11 11:26
郑州 成都 07:10 13:19
成都 郑州 16:57 23:04
上海 郑州 14:15 18:12
郑州 上海 07:33 12:02
武汉 沈阳 07:23 19:03
沈阳 武汉 07:32 19:20
重庆 昆明 07:43 11:55
昆明 重庆 14:52 19:09
重庆 上海 08:48 20:56
上海 重庆 11:39 23:29
南昌 重庆 07:08 14:45
重庆 南昌 15:12 22:23
南京 南昌 13:00 17:21
南昌 南京 09:04 13:25
南昌 福州 08:13 11:09
福州 南昌 18:30 21:25
长春 上海 11:53 22:54
上海 长春 09:08 20:05
沈阳 成都 07:02 21:47
成都 沈阳 09:06 23:13
北京 沈阳 13:30 17:15
沈阳 北京 08:11 11:58
沈阳 太原 15:34 23:00
太原 沈阳 07:44 15:14
贵阳 成都 19:15 22:35
成都 贵阳 11:11 14:31
贵阳 广州 14:03 20:26
广州 贵阳 07:27 13:43
武汉 贵阳 08:01 13:25
贵阳 武汉 14:23 19:33
福州 广州 08:16 14:15
广州 福州 14:55 21:05
昆明 福州 11:11 22:02
福州 昆明 08:41 19:28
福州 上海 12:26 16:55
上海 福州 07:54 12:15
福州 杭州 14:45 18:32
杭州 福州 18:55 22:38
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Scanner;
import java.util.Set;
public class Main {
static Set<String>set=new HashSet<>();
static long res=0x3f3f3f;
static List<String[]>list=new ArrayList<>();
public static void main(String[] args) {
String[]strings=new String[]{"上海","广州","长沙","西安","杭州","济南","成都","南京","昆明","郑州","天津","太原","武汉","重庆","南昌","长春","沈阳","贵阳","福州"};
set.addAll(Arrays.asList(strings));
Scanner in=new Scanner(System.in);
for (int i = 0; i < 132; ++i) {
list.add(in.nextLine().split(" "));
}
dfs("北京",0,"12:00");
System.out.println(res+strings.length*1440);
in.close();
}
private static void dfs(String start,long sum,String time){
if (set.size()==0&&start.equals("北京")){
res=Math.min(res, sum);
System.out.println(res);
return;
}
for (String[] s : list) {
if (set.size()==0&&s[0].equals(start)&&s[1].equals("北京")){
int t=cnt(s[2],s[3])+cnt(time,s[2]);
System.out.println(start);
dfs(s[1],sum+t,s[3]);
}
if (s[0].equals(start)&&set.contains(s[1])){
set.remove(s[1]);
int t=cnt(s[2],s[3])+cnt(time,s[2]);
System.out.println(start);
dfs(s[1],sum+t,s[3]);
set.add(s[1]);
}
}
}
private static int cnt(String a,String b){
String[]aa=a.split(":");
String[]bb=b.split(":");
int t=Integer.parseInt(bb[0])*60+Integer.parseInt(bb[1])-Integer.parseInt(aa[0])*60-Integer.parseInt(aa[1]);
if (t<0){
return 1440+t;
}else {
return t;
}
}
}
应该要运行半个小时以上,把字符串换成数字会更快,自行修改,思路就是这样,暴力。
key:41613