题目描述:
关于旅行售货员问题,有多个版本的描述。这里小编选择了一种题目描述
在瓦罗兰大陆上,蕴含着强大能量的符文散落在各地。作为召唤师的你需要收集n个铭文来强化自身。现在给出你n个符文的坐标,假设起始点在(0,0),请你计算获得这n个符文并回到起始点所需要走的最短路程。(两个点之间的距离为其曼哈顿距离)
相应输入
第一行输入一个n,(1≤n≤10 ) 接下来n行每行两个整数X,Y(-1000≤X,Y≤1000) 可能有不同符文的位置相同。
测试样例
3
1 1
3 3
2 3
测试输出
12
思路
这个题本质是一个送货郎问题。送货郎问题的解空间其实是一棵排列树,该排列树的顺序开始是x[1,2,…n],儿相应的排列树的顺序石油x[1:n]的所有排列组成。
附上题目代码:
#include<stdio.h>
#include<math.h>
#include<algorithm>
using namespace std;
pair<int, int>p[15];
int n, dis, bestc = 0x3f3f3f3f;
int x[15];
void swap(int a, int b) {
int t;
t = x[a];
x[a] = x[