定义dp[i][num][j]为考虑前i个元素且当前存在j个1(可移动)且以元素num结尾的最小答案.
如果当前物品不能移动,那么有 dp[i][num][j]=min(dp[i][num][j],dp[i−1][0/1][num−currentOne]+(currentOne xor k))。
如果当前物品可以移动,那么还需要更新dp数组中可以移动的部分,转移方程同上。
小红经常从小红书上的笔记中获得灵感。其中一篇笔记认为,如果有n个物品,可以把所有物品分为两类,这些物品摆成一排,如果相邻的两个物品属于不同的类别,那么不美观程度就会加一。