这是一篇发布于 1279 天以前的旧文。其中的部分内容可能已经过时。
可以对这个数列中相邻的两个数字交换位置,最终要使得相同的数字都在一起。
首先可以发现一个重要的性质:如果交换相邻的两数,其他所有数字的相对位置是不变的。根据这个性质,在交换的时候我们就可以分开考虑每一种数字。
接下来考虑状态转移,设现在状态已经是 $mask$,需要新增的数字是 $j$($mask$ 中对应位为 0)。则我们可以直接把所有 $j$ 移动到最左边(如果最优解中此时 $j$ 不在最左边怎么办?则其他状态会涵盖这个方案)。
int nc=20s=1<<20;
请勿填写无意义邮箱或发表无关评论,否则会被视为垃圾评论。