View Code
1 #include <iostream> 2 #include <stdio.h> 3 #include <string> 4 #include <math.h> 5 #include <algorithm> 6 using namespace std; 7 #define DEBUG 8 int min(int a, int b){ 9 return a<b?a:b; 10 } 11 int main(){ 12 #ifndef DEBUG 13 freopen("in.txt", "r", stdin); 14 #endif 15 int cas; 16 scanf("%d", &cas); 17 int id=1; 18 while(cas--){ 19 string s, t; 20 cin >> s >> t; 21 printf("Case %d: ",id++); 22 int i, ans=0; 23 int cnt1, cnt2, cnt3, cnt4, cnt5, cnt6; 24 cnt1=count(s.begin(), s.end(), '0'); 25 cnt2=count(s.begin(), s.end(), '?'); 26 cnt3=count(t.begin(), t.end(), '0'); 27 if(cnt1+cnt2<cnt3){ 28 printf("%d\n", -1); 29 continue; 30 } 31 cnt4=0; 32 cnt5=0; 33 ans+=cnt2; 34 for(i=0; i<s.length(); i++){ 35 if(s[i]=='0' && t[i]=='1') cnt4++; 36 else if(s[i]=='1' && t[i]=='0') cnt5++; 37 } 38 ans+=min(cnt4, cnt5); 39 cnt6=abs(cnt4-cnt5); 40 ans+=cnt6; 41 printf("%d\n", ans); 42 } 43 return 0; 44 }
题目很简答,题意就不说了。
这里值得说的是,stl的count函数在这里可以用一下~