-
两个串都不交换:
fi,s1,i,s2,i=max(fi−1,0,0,fi−1,0,1,fi−1,1,0,fi−1,1,1)+[s1,i=s2,i]
-
交换 s1 的第 i 位和本次交换前的最后一位:
fi,0,s2,i=max(fi−1,0,0+[s1,i=0]+[s2,i=0]−1,fi−1,0,1+[s1,i=1]+[s2,i=0])
fi,1,s2,i=max(fi−1,1,0+[s1,i=0]+[s2,i=1],fi−1,1,1+[s1,i=1]+[s2,i=1]−1)
其中 −1 是拆散了之前匹配的 (0,0) 或 (1,1),前提是 t1,i=t1,i−1=1。
-
交换 s2 的第 i 位和本次交换前的最后一位:
fi,s1,i,0=max(fi−1,0,0+[s1,i=0]+[s2,i=0]−1,fi−1,1,0+[s1,i=0]+[s2,i=1])
fi,s1,i,1=max(fi−1,0,1+[s1,i=1]+[s2,i=0],fi−1,1,1+[s1,i=1]+[s2,i=1]−1)
前提是 t2,i=t2,i−1=1。
-
两组都交换:
fi,0,0=fi−1,0,0+[s1,i=s2,i]
fi,0,1=fi−1,0,1+[s1,i=s2,i]
fi,1,0=fi−1,1,0+[s1,i=s2,i]
fi,1,1=fi−1,1,1+[s1,i=s2,i]
前提是 t1,i=t1,i−1=t2,i=t2,i−1=1。