售货员的难题(salesman.cpp)
【问题描述】
某乡有n个村庄(1<n<15),有一个售货员,他要到各个村庄去售货,各村庄之间的路程s(0<s<1000)是已知的,且A村到B村与B村到A村的路大多不同。为了提高效率,他从商店出发到每个村庄一次,然后返回商店所在的村,假设商店所在的村庄为1,他不知道选择什么样的路线才能使所走的路程最短。请你帮他选择一条最短的路。
【输入】
村庄数n和各村之间的路程(均是整数)。
【输出】
最短的路程。
【样例】
salesman,in
3 {村庄数}
0 2 1 {村庄1到各村的路程}
1 0 2 {村庄2到各村的路程}
2 1 0 {村庄3到各村的路程}
salesman.out
3
这道题只有15个村庄,所以我们可以用二进制存去过的村庄,第i位是0或1表示是否去过这个村庄,然后DP就行了;
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
int dis[