新人太难了,只能按自己理解来记忆
【1,3,5】
【4,1,1】
【1,5,3】
dp[i][state|j] =min(dp[i][satae | j], dp[i-1][state]+cost[i][j]);
公式的理解 如果第i行第j列一定被选择,那么 state | j 代表的是 state 是 j互补的子集
比如 state | j == 111 j== 100 cost[2][2] 被选中; 那么state就是 所有和j能凑成111的子集
state 可以是 011 也可以是111 ,所以dp[i][state|j] =上一层的互补子集 和当前这一层互补子集的最小值