hdu5067:Harry And Dig Machine

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5067

参考思路:根据所给矩阵,我们可以建立一个图,图的节点为石头数不为0的节点,还包括矩阵左上角对应的节点,所以节点数不超过11个,节点之间的距离为横坐标之差的绝对值加上纵坐标之差的绝对值,假设左上角的节点对应的编号为0,那么问题便转化成从第0个节点开始,遍历所有的节点,然后再返回到第0个节点的最短路径,根据我们对最短路径的了解,最短路径上的节点除了头尾节点相同外,不可能有节点编号相同的节点。由于节点数最多11个,所以可以用动态规划来求解,对于dp[i][j],i表示一个遍历状态,j表示这个遍历状态以第j个点结尾,比如dp[001101][2],表示这个遍历状态经过了第0个以及第2个、第三个节点,经过的先后顺序不用管,只需知道最后停留的节点,这里为第2个节点。

然后状态转移方程式为:dp[i][j] = min(dp[i][j], dp[i'][j']+distance(j', j) ),其中i = (i' | (1<<j')), j != j',最后答案为result = min(result, dp[(1<<n) - 1][i] + distance(i, 0),其中0<=i<n,n为节点数。


c++源码:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值