Bits Equalizer UVA

来源:互联网 发布:北京大数据培训多少钱 编辑:程序博客网 时间:2024/06/07 15:12
点击打开链接
#include<cstdio>#include<cstring>/*别看错了:0能变1,1不能变0能完成的条件是,s与t长度相等且s中0数量和?数量之和大于等于t中0数量首先,对于相等的字符显然不应修改然后:***抄的主要就是要注意0能变1,1不能变0因此,优先满足1->0的情况****/char s[110];char t[110];int a1;//0->1int a2;//1->0int a3;//?->1int a4;//?->0int cse=0,c;int ans;int main(){int i,len;scanf("%d",&c);while(c--){scanf("%s",s);scanf("%s",t);printf("Case %d: ",++cse);if(strlen(s)!=strlen(t)){printf("-1\n");continue;}a1=0;a2=0;a3=0;a4=0;ans=0;len=strlen(s);for(i=0;i<len;i++)if(s[i]!=t[i]){if(s[i]=='0')a1++;else if(s[i]=='1')a2++;else if(t[i]=='1')a3++;else a4++;}if(a1+a3<a2){printf("-1\n");continue;}while(a1>0&&a2>0){a1--;a2--;ans++;}while(a3>0&&a2>0){a3--;a2--;ans+=2;}ans+=a3;ans+=a4;ans+=a1;//曾经忘了导致错误,多余的另三种操作都要用1次完成,不能忽略0->1多余的printf("%d\n",ans);}return 0;}

原创粉丝点击