zoukankan      html  css  js  c++  java
  • UVA-12545 Bits Equalizer (贪心)

    题目大意:两个等长的字符串p和q,p有‘0’,‘1’,‘?’组成,q由‘0’,‘1’组成。有三种操作:1.将‘?’变成0;2.将‘?’变成‘1’;3.交换同一字符串任意两个位置上的字符。问有p变到q最少需要几次操作。

    题目分析:贪心。贪心策略:若两个位置上的字符相同,则不用处理;能交换位置便交换位置,这样能一次改变两个字符,优先交换‘0’,如果没‘0’再交换‘?’。

    代码如下:

    # include<iostream>
    # include<cstdio>
    # include<string>
    # include<cstring>
    # include<algorithm>
    using namespace std;
    
    string p,q;
    
    int main()
    {
        int T,cas=0;
        scanf("%d",&T);
        while(T--)
        {
            cin>>p>>q;
    
            int step=0,l=p.size();
            for(int i=0;i<l;++i){
                if(p[i]==q[i])
                    continue;
                if(p[i]!='1')
                    continue;
                int flag=1;
                for(int j=0;j<l;++j){
                    if(p[j]==q[j]||i==j)
                        continue;
                    if(q[j]=='1'&&p[j]=='0'){
                        swap(p[i],p[j]);
                        ++step;
                        flag=0;
                        break;
                    }
                }
                if(flag){
                    for(int j=0;j<l;++j){
                        if(p[j]==q[j]||i==j)
                            continue;
                        if(q[j]=='1'&&p[j]=='?'){
                            swap(p[i],p[j]);
                            ++step;
                            break;
                        }
                    }
                }
            }
            for(int i=0;i<l;++i){
                if(p[i]==q[i]||p[i]=='1')
                    continue;
                p[i]=q[i];
                ++step;
            }
    
            printf("Case %d: ",++cas);
            if(p==q)
                printf("%d
    ",step);
            else
                printf("-1
    ");
        }
        return 0;
    }
    

      

  • 相关阅读:
    AC自动机【学习笔记】
    SCOI2016 背单词【Trie树,贪心】
    【字符串算法】字典树Trie入门
    USACO 1.3 Name That Number【暴搜】
    MapReduce分组
    MapReduce排序
    博客园添加访问人数统计
    MapReduce的分区
    MapReduce的计数器
    MapReduce部分源码解读(一)
  • 原文地址:https://www.cnblogs.com/20143605--pcx/p/4870841.html
Copyright © 2011-2022 走看看