码迷,mamicode.com
首页 > 其他好文 > 详细

[状压dp]经典TSP

时间:2014-10-21 00:43:11      阅读:285      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   for   sp   div   log   amp   bs   

 

0出发 每个顶点经过一次 回到0 最小花费.

 

记忆化搜索:

 1 //  s: 已经访问过的节点状态  v: 当前位置
 2 int dfs(int s, int v)
 3 {
 4     if(dp[s][v]>=0)
 5         return dp[s][v];
 6     if(s==(1<<n)-1 && v==0)   // 所有都走过 并 回到0
 7         return dp[s][v]=0;
 8     int ans=INF;
 9     for(int u=0;u<n;u++)
10         if(!(s>>(u &1))) // u没走过   则走到u
11             ans=min(ans, dfs(s | (1<<u), u)+mp[v][u]);
12     return dp[s][v]=ans;
13 }
14 int main()
15 {
16     memset(dp, -1, sizeof(dp));
17     printf("%d\n", dfs(0, 0));
18     return 0;
19 }

 

直接dp:

1         memset(dp, 127, sizeof(dp));
2         dp[(1<<n)-1][0]=0;
3         for(int s=(1<<n)-2;s>=0;s--)
4             for(int v=0;v<n;v++)
5                 for(int u=0;u<n;u++)
6                     if(!(s>> u & 1))
7                         dp[s][v]=min(dp[s][v], dp[s | 1<<u][u]+mp[v][u]);
8         printf("%d", dp[0][0]);

 

[状压dp]经典TSP

标签:style   blog   color   for   sp   div   log   amp   bs   

原文地址:http://www.cnblogs.com/Empress/p/4039240.html

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