第十四届蓝桥杯省赛大学C组(C/C++)填充

原题链接:填充

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

输入格式

输入一行包含一个字符串。

输出格式

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

数据范围

对于所有评测用例,1≤n≤10^6。

输入样例:

1110?0

输出样例:

2

样例解释

如果在问号处填 0,则最多出现一个 00 和一个 11111000


 解题思路:

主要利用动态规划思想,定义一个dp[i]表示遍历到第i个位置的最大字串个数。第i个位置可以由前一个位置转移,分下面三种情况:

1.如果当前位置为0,它前一位三种情况0,1,?,当前一位为0或?时可以凑成字串,dp[i]=dp[i-1]+1,否则无法凑成字串dp[i]=dp[i-1]。

2.如果当前位置为1,它前一位三种情况0,1,?,当前一位为1或?时可以凑成字串,dp[i]=dp[i-1]+1,否则无法凑成字串dp[i]=dp[i-1]。

3.如果当前位置为?,它前一位三种情况0,1,?,当前一位为0、1或?时可以凑成字串,dp[i]=dp[i-1]+1,否则无法凑成字串dp[i]=dp[i-1]。

我们每次把能够凑成字串的位置都标记为2,防止重复利用。


代码实现:

#include<iostream>
#include<cstring>
using namespace std;
const int N=1e6+5;
string s;
int res;
int dp[N];
int main(){cin>>s;for(int i=1;i<s.size();i++){if(s[i]=='0'){//第一种情况if(s[i-1]=='0'||s[i-1]=='?'){dp[i]=dp[i-1]+1;s[i]=s[i-1]='2';}dp[i]=max(dp[i],dp[i-1]);}if(s[i]=='1'){//第二种情况if(s[i-1]=='1'||s[i-1]=='?'){dp[i]=dp[i-1]+1;s[i]=s[i-1]='2';}dp[i]=max(dp[i],dp[i-1]);}if(s[i]=='?'){//第三种情况if(s[i-1]=='0'||s[i-1]=='1'||s[i-1]=='?'){dp[i]=dp[i-1]+1;s[i]=s[i-1]='2';}dp[i]=max(dp[i],dp[i-1]);}}cout<<dp[s.size()-1]<<endl;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/596815.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NASA数据集——北美地区永久冻土影响的冻原和北方生态系统内发生的土壤呼吸作用产生的二氧化碳(CO2)排放量(300 米的空间分辨率)

Soil Respiration Maps for the ABoVE Domain, 2016-2017 简介 文件修订日期&#xff1a;2022-04-20 数据集版本: 1 摘要 该数据集以 300 米的空间分辨率提供了 2016-08-18 至 2018-09-12 期间阿拉斯加和加拿大西北部受永久冻土影响的冻原和北方生态系统内发生的土壤呼吸作…

nest状态码HttpCode

写法 默认情况下&#xff0c;响应的状态码总是默认为 200&#xff0c;除了 POST 请求&#xff08;默认响应状态码为 201&#xff09;&#xff0c;可以通过在处理函数外添加 HttpCode&#xff08;…&#xff09; 装饰器来轻松更改状态码 src/cats/cats.controller.ts import {…

【环境变量】常见的环境变量 | 相关指令 | 环境变量系统程序的结合理解

目录 常见的环境变量 HOME PWD SHELL HISTSIZE 环境变量相关的指令 echo&env export unset 本地变量 环境变量整体理解 程序现象_代码查看环境变量 整体理解 环境变量表 环境变量表的传递 环境变量表的查看 测试验证 少说废话&#x1f197; 每个用户…

Java-类型转换

Java数据类型转换的规则掌握后&#xff0c;将使我们对以后的学习事半功倍&#xff0c;下面是我列出的一些重点。 类型转换 由于Java是强类型语言&#xff0c;所以要进行有些运算的时候&#xff0c;需要用到类型转换。底到高依次是&#xff1a;byte,short,char->int->lo…

故障诊断模型 | Maltab实现PLS偏最小二乘法的故障诊断

文章目录 效果一览文章概述模型描述源码设计参考资料效果一览 文章概述 故障诊断模型 | Maltab实现PLS偏最小二乘法的故障诊断 模型描述 在机器学习领域,我们常常需要通过训练数据来学习一个函数模型,以

ES6对象新增了哪些扩展和方法

文章目录 一、属性的简写二、属性名表达式三、super关键字四、扩展运算符的应用五、属性的遍历六、对象新增的方法Object.is()Object.assign()Object.getOwnPropertyDescriptors()Object.setPrototypeOf()Object.getPrototypeOf()Object.keys()Object.values()Object.entries()…

pyx文件在Python中的应用

pyx文件为Cython语法编写的源代码文件&#xff0c;通常用来实现一些对性能要求较高、需要接近C语言速度的功能代码。Cython是一种混合了Python语法与C语言语法特性的编程语言&#xff0c;使开发者可以编写高性能的Python扩展模块。 当Python代码中存在大量循环、数值运算或复杂…

椋鸟数据结构笔记#8:二叉树的遍历、创建与销毁

萌新的学习笔记&#xff0c;写错了恳请斧正。 链式二叉树 这篇笔记我们讨论基于链式二叉树&#xff0c;其节点的数据结构如下&#xff1a; typedef int BTDatatype;typedef struct BTNode {BTDataType data;struct BTNode* left;struct BTNode* right; } BTNode;二叉树的遍历…

蓝桥杯 经验技巧篇

1. 注意事项 &#x1f468;‍&#x1f3eb; 官方通知 &#x1f468;‍&#x1f3eb; 资料文档 时间&#xff1a;4月13日 9:00~13:00 &#xff08;时长 4小时&#xff09;物品 准考证&#xff08;赛前一周开放下载&#xff0c;自行打印&#xff09;学生证身份证笔、水、外套&a…

【Claude 3】This organization has been disabled.此组织已被禁用。(Claude无法对话的原因和解决办法)

Claude对话提示 This organization has been disabled.此组织已被禁用。 This organization has been disabled.此组织已被禁用。 This organization has been disabled.此组织已被禁用。 问题截图 问题原因 出现该页面&#xff0c;表示您的账户已经无法使用&#xff0c;可能…

Qt+OpenGL-part3

1-4EBO画矩形_哔哩哔哩_bilibili 可以绘制两个三角形来组成一个矩形&#xff08;OpenGL主要处理三角形&#xff09; 直接画两个三角形&#xff1a; #include "openglwidget.h" #include <QDebug>unsigned int VBO,VAO; unsigned int shaderProgram;//顶点着…

CSS-属性

&#x1f4da;详见 W3scholl&#xff0c;本篇只做快速思维索引。 CSS 背景 用于定义元素的背景效果。 background-colorbackground-imagebackground-positionbackground-repeatbackground-attachment background-color background-color 属性指定元素的背景色。 h1 {back…