蓝桥杯真题 - 填充 - 题解

题目链接:https://www.lanqiao.cn/problems/3519/learning/

个人评价:难度 1 星(满星:5)

前置知识:动态规划


整体思路

  • 设 d p [ i ] dp[i] dp[i] 表示到前 i i i 个字符能替换出最多的 00 , 11 00,11 00,11 子串个数,当第 i − 1 i-1 i−1 与第 i i i 个字符至少有一个为 ? 或者两个字符相同时, d p [ i ] = d p [ i − 2 ] + 1 dp[i]=dp[i-2]+1 dp[i]=dp[i−2]+1,否则 d p [ i ] = d p [ i − 1 ] dp[i]=dp[i-1] dp[i]=dp[i−1];

过题代码

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;

typedef long long LL;
const int maxn = 1000000 + 100;
int n;
char str[maxn];
int dp[maxn];

int main() {
#ifdef ExRoc
    freopen("test.txt", "r", stdin);
#endif // ExRoc
    ios::sync_with_stdio(false);

    scanf("%s", str + 1);
    n = strlen(str + 1);
    for (int i = 2; i <= n; ++i) {
        if (str[i] == '?' || str[i - 1] == '?' || str[i] == str[i - 1]) {
            dp[i] = dp[i - 2] + 1;
        } else {
            dp[i] = dp[i - 1];
        }
    }
    cout << dp[n] << endl;

    return 0;
}
相关推荐
点云SLAM29 分钟前
C++ Template(模板)解读和模板报错如何“逆向阅读”定位
c++·c++20·c++模版·c++高级应用·c++模版报错定位
d111111111d34 分钟前
在STM32函数指针是什么,怎么使用还有典型应用场景。
笔记·stm32·单片机·嵌入式硬件·学习·算法
明洞日记39 分钟前
【数据结构手册008】STL容器完全参考指南
开发语言·数据结构·c++
AI科技星1 小时前
质量定义方程常数k = 4π m_p的来源、推导与意义
服务器·数据结构·人工智能·科技·算法·机器学习·生活
摇摆的含羞草1 小时前
哈希(hash)算法使用特点及常见疑问解答
算法·哈希算法
农夫山泉2号2 小时前
【c++】——c++编译的so中函数有额外的字符
java·服务器·c++
仰泳的熊猫2 小时前
1077 Kuchiguse
数据结构·c++·算法·pat考试
LYFlied2 小时前
【每日算法】LeetCode 19. 删除链表的倒数第 N 个结点
算法·leetcode·链表
踏浪无痕2 小时前
计算机算钱为什么会算错?怎么解决?
后端·算法·面试
夏乌_Wx3 小时前
练题100天——DAY28:找消失的数字+分发饼干
数据结构·算法