题意:
给出两个字符串 S和T ,S中只含0,1,?,T中只含0,1 要求对S操作把S转换成T,规则如下:
1.0 ->1
2.任意位置两两交换
3.?->0或1
求最少步数,如果无法转换输出-1
对于S与T的不对应情况,能很直观的分为四类,01 10 1? 0?,由于交换能够使步数减少,01 和 10必然要先交换,交换之后如果只剩下01,那么剩下的不对应个数累加就直接是答案,否则再考虑?->0继续产生匹配减少个数累加判断结果
#include<cstring>
#include<string>
#include<iostream>
#include<queue>
#include<cstdio>
#include<algorithm>
#include<map>
#include<cstdlib>
#inc