蓝桥杯真题:密码脱落(区间dp)

这篇具有很好参考价值的文章主要介绍了蓝桥杯真题:密码脱落(区间dp)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

题目:

解题思路:

dp分析: 

解题代码:


题目:

蓝桥杯真题:密码脱落(区间dp),每日一题分享,蓝桥杯备战知识汇总,蓝桥杯历年真题,蓝桥杯,算法,职场和发展

解题思路:

题目要求的为脱落的种子数(即回文字符中没有对应回文的字符的数量)

我们可以转换成求回文字符串最长回文字符串的长度

dp分析: 

蓝桥杯真题:密码脱落(区间dp),每日一题分享,蓝桥杯备战知识汇总,蓝桥杯历年真题,蓝桥杯,算法,职场和发展文章来源地址https://www.toymoban.com/news/detail-595341.html

解题代码:

#include<iostream>
#include<cstring>
using namespace std;

const int N=1e3+6;
int f[N][N];

int main(){
    string s;
    cin>>s;

    int len=s.length();

    for(int i=1;i<=len;i++){//枚举距离大小
        for(int j=0;j+i-1<len;j++){//枚举起点
            int l=j;
            int r=j+i-1;

            if(l==r) f[l][r]=1;//当距离只有一行的时候
            else{
                f[l][r]=max(f[l+1][r],f[l][r-1]);
//这里对于距离i-1的点每次因为上一次已经枚举完成,故可以直接取max

                if(s[l]==s[r]) f[l][r]=max(f[l+1][r-1]+2,f[l][r]);
//对于s[l]和s[r]相等的情况
            }
        }
    }

    cout<<len-f[0][len-1];

    return 0;
}

到了这里,关于蓝桥杯真题:密码脱落(区间dp)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 蓝桥杯备赛之动态规划篇——涂色问题(区间DP)

    2023第十四届蓝桥杯模拟赛第二期个人题解(Java实现) 2023第十四届蓝桥杯模拟赛第三期个人题解(Java实现) 蓝桥杯备赛之动态规划篇——背包问题 蓝桥杯真题——单词分析(Java实现) 😘😘 哈喽,大家好!这里是蓝桥杯系列文章的动态规划章节🔥🔥,今天要讲解的是区

    2024年01月23日
    浏览(49)
  • 每日一题:leetcode 57 插入区间

    给你一个  无重叠的  , 按照区间起始端点排序的区间列表。 在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。 示例 1: 示例 2: 示例 3: 示例 4: 示例 5: 提示: 0 = intervals.length = 104 intervals[i].length == 2 0 = int

    2024年02月11日
    浏览(46)
  • C++---区间DP---棋盘分割(每日一道算法2023.5.2)

    注意事项: 涉及到\\\"矩阵/二维前缀和\\\"的一些知识,建议先理解那篇文章。 题目: 将一个 8×8 的棋盘进行如下分割:将原棋盘割下一块矩形棋盘并使剩下部分也是矩形,再将剩下的部分继续如此分割,这样割了 (n−1) 次后,连同最后剩下的矩形棋盘共有 n 块矩形棋盘。(每次切

    2024年02月02日
    浏览(33)
  • 2023-08-27 LeetCode每日一题(合并区间)

    点击跳转到题目位置 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。 示例 1: 示例 2: 提示: 1 = intervals.length = 10 4 intervals[i].length == 2 0 = s

    2024年02月10日
    浏览(48)
  • 2023-08-28 LeetCode每日一题(插入区间)

    点击跳转到题目位置 给你一个 无重叠的 ,按照区间起始端点排序的区间列表。 在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。 示例 1: 示例 2: 示例 3: 示例 4: 示例 5: 提示: 0 = intervals.length = 10 4 interval

    2024年02月11日
    浏览(48)
  • 【力扣每日一题】2023.8.27 合并区间

    目录 题目: 示例: 分析: 代码: 那么合并区间是在什么情况下才能合并呢? 我总结为两种情况 第一种情况就是这样,第二个区间的左区间大于第一个区间的左区间但是小于第一个区间的右区间,并且第一个区间的右区间小于第二个区间的右区间,这种情况下合并的结果就

    2024年02月11日
    浏览(35)
  • 【力扣每日一题】2023.8.28 插入区间

    目录 题目: 示例: 分析: 代码: 和昨天的题大差不差,我们仍然是有一堆区间,题目给我们一个新的区间,要我们把新区间插入到原本的区间数组里,并且能合并的要合并。 我们可以直接把新区间放入数组里,接着执行昨天的代码即可,一行都不用改,甚至形参名字都是

    2024年02月10日
    浏览(44)
  • C++---区间DP---加分二叉树(每日一道算法2023.4.28)

    题目: 设一个 n 个节点的二叉树 tree 的中序遍历为(1,2,3,…,n),其中数字 1,2,3,…,n 为节点编号。 每个节点都有一个分数(均为正整数),记第 i 个节点的分数为 di,tree 及它的每个子树都有一个加分,任一棵子树 subtree(也包含 tree 本身)的加分计算方法如下: subtree的左

    2024年02月06日
    浏览(34)
  • 2023-07-26力扣每日一题-区间翻转线段树

    链接: 2569. 更新数组后处理求和查询 题意: 给两个等长数组nums1和nums2,三个操作: 操作1:将nums1的 [l,r] 翻转(0变1,1变0) 操作2:将 nums2[any] 变成 nums2[any]+nums1[any]*p ,p由操作给出,any表示数组里的每一位 操作3:查询nums2的和 解: 由于每次更新nums2的时候,不需要考虑

    2024年02月15日
    浏览(44)
  • LeetCode每日一题:56. 合并区间(2023.8.27 C++)

    目录 56. 合并区间 题目描述: 实现代码与解析: 排序 + 贪心 原理思路:         以数组  intervals  表示若干个区间的集合,其中单个区间为  intervals[i] = [starti, endi]  。请你合并所有重叠的区间,并返回  一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间  。

    2024年02月11日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包