TSP问题是一个np问题 但是我们可以通过伪多项式算法来实现 就是用状态压缩dp
dp[i][j]:i是目前已经走过的城市的状态 j是在此状态下最后一个到达的城市 dp[i][j]表示到此时的最小用时 如果状态转移不合法 设置为
-1 那怎么来递推呢 我们想一想 如果一个i要从 00000000001(二进制表示) 走过来 那么所走的状态一定都是小于i的 比如
i=000000101 要从 000000001 或者 0000000100走过来一样 所以i从小到大就可以了!
状态转移方程dp[i][j]=min(dp[i][j],dp[state][k]+mat[k][j]) 其中state 和k是枚举合法的 。
7:海贼王之伟大航路
-
总时间限制:
- 1000ms 内存限制:
- 65536kB
-
描述