我们可以设 dp[s][i] 表示已经走过的点的集合为
,当前正在第
个点。其中
的二进制位从右向左数的第
位表示是否走过了这一个点,对应位置为 1 表示走过这一点,否则为 0。现在牛牛从第
个点出发向第
个点移动,若用 dis 表示
两点间的距离,则下列四个状态转移方程错误的是()
注意:| 表示二进制中的按位或运算,^ 表示二进制中的按位异或运算,& 表示二进制中的按位与运算。
dp[s+(1 << j)][j] = min(dp[s+(1 << j)][j], dp[s][j] + dis)
dp[s | (1 << j)][j] = min(dp[s | (1 << j)][j], dp[s][j] + dis)dp[s ^ (1 << j)][j] = min(dp[s ^ (1 << j)][j], dp[s][j] + dis)dp[s & (1 << j)][j] = min(dp[s & (1 << j)][j], dp[s][j] + dis)
这道题你会答吗?花几分钟告诉大家答案吧!