码迷,mamicode.com
首页 > 系统相关 > 详细

hdu 5067 Harry And Dig Machine

时间:2020-02-29 20:35:23      阅读:82      评论:0      收藏:0      [点我收藏+]

标签:二维   font   get   style   问题   using   class   space   cst   

http://acm.hdu.edu.cn/showproblem.php?pid=5067

 

题意:

二维网格图中有若干块石头,从左上角出发,搬走所有石头,再回到左上角的最短距离

 

旅行商问题

参考上一篇博客

 

#include<cstdio>
#include<algorithm>
 
using namespace std;

#define N 11

int dp[1<<N][N]; 
int dis[N][N];

int stx[N],sty[N];

int main()
{
     int n,m,tot,x,S;
     while(scanf("%d%d",&n,&m)!=EOF)
     {
          tot=0;
          for(int i=1;i<=n;++i)
              for(int j=1;j<=m;++j)
              {
                  scanf("%d",&x);
                  if(x) stx[++tot]=i,sty[tot]=j;
              }
          for(int i=1;i<=tot;++i)
              for(int j=1;j<=tot;++j)
                  dis[i][j]=abs(stx[i]-stx[j])+abs(sty[i]-sty[j]);
          S=(1<<tot+1)-1;
          for(int i=1;i<=S;++i)
              for(int j=0;j<=tot;++j)
                  dp[i][j]=1e9;
          for(int i=1;i<=tot;++i) dp[0][i]=dis[0][i]=stx[i]-1+sty[i]-1;
         for(int i=1;i<S;++i)
             for(int j=0;j<=tot;++j)
                 if(!(i&1<<j))
                     for(int k=1;k<=tot;++k)
                         if(i&1<<k)
                             dp[i][j]=min(dp[i][j],dis[j][k]+dp[i^1<<k][k]);
         printf("%d\n",dp[S-1][0]);
    }
}

 

hdu 5067 Harry And Dig Machine

标签:二维   font   get   style   问题   using   class   space   cst   

原文地址:https://www.cnblogs.com/TheRoadToTheGold/p/12384911.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!