约 10 分钟
旅行商问题(走遍所有城市各一次求最短)可用状压 DP。dp[S][i] 表示已访问城市集合为 S、当前停在 i 的最短路程。转移是从“去掉 i、停在 j 的状态”走到 i:dp[S][i]=min(dp[S^(1<<i)][j]+dist[j][i])。
dp[S][i]
dp[S][i]=min(dp[S^(1<<i)][j]+dist[j][i])
dp[S][i] 的两维分别记录了什么?
登录 后可看答案