uva 12545 - Bits Equalizer(比特变化器)

好在原来做题的思路不知道何时就养成了这种思路,可能是见这种思路多了一点吧,就自然的想到了用这种方法。

没有什么原因,思路题么,有思路那还用多说些什么,而思路是怎么来的,就更没什么好说的了。。。多去体会大神的思路或许是我等菜鸟提高的一个途径吧

#include<cstdio>
#include<cstring>
#include<string>
#include<iostream>
using namespace std;

string s1,s2;
int cnt0,cnt1,cnt2;
int main()
{
    int t;
    scanf("%d",&t);
    for(int kase=1; kase<=t; kase++)
    {
        cin>>s1>>s2;
        cnt0=cnt1=cnt2=0;
        int cnt11=0,cnt21=0;
        for(int i=0; i<s2.size(); i++)
        {
            if(s1[i]=='?') cnt2++;
            if(s1[i]=='1') cnt11++;
            if(s2[i]=='1') cnt21++;
            if(s2[i]!=s1[i]&&s1[i]!='?')
            {
                if(s2[i]=='0')
                    cnt0++;
                if(s2[i]=='1')
                    cnt1++;
            }
        }
        if(cnt11>cnt21)
        {
            printf("Case %d: -1\n",kase);
            continue;
        }
        int ans=0;
        if(cnt0==cnt1)
        {
            ans+=cnt0;
            ans+=cnt2;
        }
        if(cnt0>cnt1)
        {
            ans+=cnt1;
            ans+=(cnt0-cnt1);
            ans+=cnt2;
        }
        if(cnt0<cnt1)
        {
            ans+=cnt0;
            ans+=(cnt1-cnt0);
            ans+=cnt2;
        }
        printf("Case %d: %d\n",kase,ans);
    }
    return 0;
}

其实是可以合并,但是合并的过程我还不能一次就写出来,思考的深度还到不了那个层次,一步想太深了会是自己理不清楚,会出错误。

需要多想,往深里想,理清思路。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值