同事的你

明天你是否会想起
昨天你写的程序
明天你是否还惦记
曾经爱编程的你
领导们都已想不起
曾经加班的你
我也是偶然看程序
才想起同事的你
谁聘了牛B烘烘的你
谁安慰天天加班的你
谁把你的设计做起
谁给你做的升级

你从前总是很小心
从不把离职的事提起
你也曾无意中说起
薪水实在太低
那时候屏幕总是在闪
日子总过得太慢
你总说离职遥遥无期
转眼就各奔东西
谁聘了牛B烘烘的你
谁安慰天天加班的你
谁看了我给你写的信
谁把它删在垃圾文件夹里

从前的日子都远去
我也将有我的新上司
我也会给他编程序
给他讲同事的你
谁聘了牛B烘烘的你
谁安慰天天加班的你
谁把你的设计做起
谁给你做的升级

啦............

 

原帖:http://jianzhong5137.blog.163.com/blog/static/982904920112108358312/

这个问题可以使用回溯法来解决,对于每个目的地,尝试从它出发并遍历所有的目的地,记录每次遍历所需的天数,最终返回最短的旅行天数。 具体实现如下: ```java public static int shortestTravelDays(int[] A) { int n = A.length; Set<Integer> destinations = new HashSet<>(); // 存储所有目的地 for (int i = 0; i < n; i++) { destinations.add(A[i]); } int minDays = Integer.MAX_VALUE; for (int start : destinations) { Set<Integer> visited = new HashSet<>(); // 存储已经访问过的目的地 visited.add(start); int days = dfs(A, visited, start, start, 1); if (days < minDays) { minDays = days; } } return minDays; } private static int dfs(int[] A, Set<Integer> visited, int start, int cur, int days) { if (visited.size() == A.length) { // 所有目的地都已经访问过 return days; } int minDays = Integer.MAX_VALUE; for (int i = 0; i < A.length; i++) { if (!visited.contains(A[i])) { // 如果目的地没被访问过 visited.add(A[i]); int d = dfs(A, visited, start, A[i], days + 1); if (d < minDays) { minDays = d; } visited.remove(A[i]); } } if (cur == start && visited.size() < A.length) { // 如果回到了出发地但是还没有访问完所有目的地 return Integer.MAX_VALUE; // 这条路径不合法,返回无穷大 } return minDays; } ``` 主要思路是从每个目的地出发,尝试遍历所有的目的地,记录所需的天数,最终返回最短的旅行天数。在遍历的过程中,使用一个 Set 来记录已经访问过的目的地,避免重复访问。如果遍历的过程中回到了出发地但是还没有访问完所有目的地,说明这条路径不合法,返回无穷大。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值