思路: dp状态压缩。 dp方程为 dp[u][1<<u-1|x]=min(dp[u][1<<u-1|x],dp[v][x]+q[v][u]); ( (1<<(v-1)&x)==0 && ((1<<u)&x)!=0 ) 。
其中u为当前路径中没有走过的节点,x为当前路径,v为当前路径中走过的节点。
状态压缩即:dp[i][j]表示从起点走到第i号点,的j状态所走的最短路径。
j状态的定义:j的二进制位中为1的位置表示当前路径走过该节点。
即总共看成有1<<n种路径.
说n<20,其实n<15 所以开数组dp二位为40000 不然会爆内存,其次需注意符号优先级 加减》移位》==》(&,|)