蓝桥杯历届真题 填充#贪心算法

文章目录


题目链接

题目解读

题目描述

有一个长度为 n 的 01 串,其中有一些位置标记为 ?,这些位置上可以任意填充 0 或者 1,请问如何填充这些位置使得这个 01 串中出现互不重叠的 00 和 11 子串最多,输出子串个数。
输入格式

输入一行包含一个字符串。
输出格式

输出一行包含一个整数表示答案。
样例输入

1110?0
样例输出

2
提示

如果在问号处填 0 ,则最多出现一个 00 和一个 11:111000 。

对于所有评测用例,1 ≤ n ≤ 1000000 。

思路

看到最大最小可以考虑一手贪心算法,然后直接猜出来一个规律。

然后去找一个反例证明其是错的,如果证明不出来,那么它就是对的!

贪心思路 : 从头往后枚举,如果能发生"配对"那么答案加1

配对儿 : 如果当前字符和下一个字符一致,或者两个连续的字符里出现一个问号,那么也可以配对儿成功。

AC CODE

cpp 复制代码
#include<bits/stdc++.h>

using namespace std;

int main(){
	string s;
	cin >> s;
	
	int res=0;
	for(int i=0; i<s.size()-1; i++){
		char a=s[i];
		char b=s[i+1];
		
		if(a==b || a=='?' || b=='?'){
			res++;
			i++;	
		}
	} 
	
	cout << res;
	
	return 0;
}

参考

acwing 算法平台

注意

贪心算法证明难度较大,可以猜出来一个规律后直接使用,不需要严格证明其正确性


🌻编写本篇文章目的是笔者想以输出的形式进行学习,顺便记录学习点滴🌻

🌹 如果本篇文章对你有帮助的话那就点个赞吧👍🌹

😇 本篇文章可能存在多处不足,如有修改意见,可以私信或者评论我哦 😇


相关推荐
筱昕~呀7 天前
冲刺蓝桥杯-DFS板块(第二天)
算法·蓝桥杯·深度优先
仰泳的熊猫7 天前
蓝桥杯算法提高VIP-种树
数据结构·c++·算法·蓝桥杯·深度优先·图论
筱昕~呀7 天前
冲刺蓝桥杯-DFS板块(第一天)
算法·蓝桥杯·深度优先
小汉堡编程8 天前
LeekCode第3767题选择K个任务的最大总分:详细思考过程幽默解析 专门为小白准备
算法·leetcode·贪心算法·编程·小白专用教程
yzx9910138 天前
蓝桥杯备考智能体:构建高并发、智能化编程竞赛助手的深度实践
职场和发展·蓝桥杯
仰泳的熊猫9 天前
题目1549:蓝桥杯算法提高VIP-盾神与积木游戏
数据结构·c++·算法·蓝桥杯
载数而行5209 天前
算法系列2之最短路径
c语言·数据结构·c++·算法·贪心算法
仰泳的熊猫10 天前
题目1545:蓝桥杯算法提高VIP-现代诗如蚯蚓
数据结构·c++·算法·蓝桥杯
十八岁讨厌编程10 天前
【算法训练营 · 二刷总结篇】贪心算法、图论部分
算法·贪心算法·图论
仰泳的熊猫10 天前
题目1535:蓝桥杯算法提高VIP-最小乘积(提高型)
数据结构·c++·算法·蓝桥杯