题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=4568
 
题目大意:
给一个矩阵 n*m (n m<=200),方格里如果是0~9表示通过它时要花费的代价,-1表示不能通过它。
矩阵中有k(k<=13)个珠宝,问从任意外边框出发取走所有珠宝并求走出矩阵的最小的代价。
解题思路:
先dij预处理每一个珠宝到其他其他珠宝的最小花费,不包括自己的花费。然后就是裸的TSP问题了,状态压缩dp即可。
dp[i][j]表示最后到达第i个珠宝,且访问珠宝的状态为j时,最小的花费。
dd[i][j]表示珠宝i到珠宝j之间的花费,注意此时包括j的花费不包括i的花费。
对于已求出的每一种珠宝状态更新后面未求出珠宝的状态。
代码:

 
                   
                   
                   
                   利用最短路算法预处理珠宝间的最小代价,再通过状态压缩动态规划方法解决旅行商问题,求得从任一外边框出发取走所有珠宝并离开矩阵的最低成本。
利用最短路算法预处理珠宝间的最小代价,再通过状态压缩动态规划方法解决旅行商问题,求得从任一外边框出发取走所有珠宝并离开矩阵的最低成本。
           最低0.47元/天 解锁文章
最低0.47元/天 解锁文章
                           
                       
       
           
                 
                 
                 
                 
                 
                
               
                 
                 
                 
                 
                
               
                 
                 扫一扫
扫一扫
                     
              
             
                  
 被折叠的  条评论
		 为什么被折叠?
被折叠的  条评论
		 为什么被折叠?
		 
		  到【灌水乐园】发言
到【灌水乐园】发言                                
		 
		 
    
   
    
   
             
            


 
            