蓝桥杯C组-填充-贪心

点击此处查看原题​​​​​​​

*思路:首先要求 00 11 尽可能的多,所以尽可能多的多配对,配对只在i , i + 1之间发生,所以只需要关注str[i] 和 str[i + 1]即可,如果str[i] == str[i + 1] ,那么一定配对,res ++ , 否则说明只有 str[i] == 0 && str[i + 1] == 1 或者 str[i] == 1 && str[i + 1] == 0 两种情况,对于这种情况直接跳过,如果str[i] 或者 str[i + 1]中的某一个是?的话,那么一定可以和下一个字符匹配,所以res++,如果是??,那么随便是 11 和 00 都可以,不必担心后面的数,假如??00 = 2 , ?? 01 = 1 ,?? 11 = 2,??10 = 1 ,说明当前的 str[i] 和 str[i + 1]无关的。所以只需分 str[i] == str[i +1] 和 str[i] 或str[i + 1] 中有一个为?即可

cpp 复制代码
#include <iostream>
#include <algorithm>

using namespace std;

const int N = 1e6 + 10;

int main()
{
    string str;
    cin >> str;
    
    int res = 0;
    for(int i = 0 ; i < str.size() - 1 ;i ++)
    {
        if(str[i] == str[i + 1])
        {
            res ++;
            i ++;
        }
        else if(str[i + 1] == '?' || str[i] == '?')
        {
            res ++;
            i ++;
        }
    }
    cout << res << endl;
    
    return 0;
}
相关推荐
yuyanjingtao32 分钟前
CCF-GESP 等级考试 2023年9月认证C++四级真题解析
c++·青少年编程·gesp·csp-j/s·编程等级考试
闻缺陷则喜何志丹1 小时前
【C++动态规划 图论】3243. 新增道路查询后的最短距离 I|1567
c++·算法·动态规划·力扣·图论·最短路·路径
charlie1145141911 小时前
C++ STL CookBook
开发语言·c++·stl·c++20
小林熬夜学编程1 小时前
【Linux网络编程】第十四弹---构建功能丰富的HTTP服务器:从状态码处理到服务函数扩展
linux·运维·服务器·c语言·网络·c++·http
倔强的石头1061 小时前
【C++指南】类和对象(九):内部类
开发语言·c++
A懿轩A2 小时前
C/C++ 数据结构与算法【数组】 数组详细解析【日常学习,考研必备】带图+详细代码
c语言·数据结构·c++·学习·考研·算法·数组
机器视觉知识推荐、就业指导3 小时前
C++设计模式:享元模式 (附文字处理系统中的字符对象案例)
c++
半盏茶香3 小时前
在21世纪的我用C语言探寻世界本质 ——编译和链接(编译环境和运行环境)
c语言·开发语言·c++·算法
Ronin3054 小时前
11.vector的介绍及模拟实现
开发语言·c++
✿ ༺ ོIT技术༻4 小时前
C++11:新特性&右值引用&移动语义
linux·数据结构·c++