题目描述:
某物流派送员p,需要给a、b、c、d4个快递点派送包裹,请问派送员需要选择什么的路线,才能完成最短路程的派送。假设如图派送员的起点坐标(0,0),派送路线只能沿着图中的方格边行驶,每个小格都是正方形,且边长为1,如p到d的距离就是4。随机输入n个派送点坐标,求输出最短派送路线值(从起点开始完成n个点派送并回到起始点的距离)。
输入示例:
4
1,4
2,2
3,1
5,3
输出:
20
输入示例:
4
2,2
2,8
4,4
7,2
输出:
30
分析:
- 首先一定需要一个点集(Point[ ])
- 其次,注意本题中需要最终回到原点,否则直接使用贪心算法每次走最短即可。所以,想到一个比较朴素的方法DFS回溯。
- 具体过程,有疑惑的时候就debug一遍关注每一个细节,递归就不迷糊了。
代码:
import java.util.Scanner;
/**
深度优先搜索DFS即Depth First Search。其过程简要来说是对每一个可能的分支路径深入