。dp回文子串 通常在dp数组中存放的是 从i到j是否是回文子串

1.动态规划

2.中心扩展法

 #include<iostream>
 #include<algorithm>
 #include<string>
 using namespace std;
 ][] = {  };
 int main(void)
 {
     string s1;
     while (cin >> s1)
     {
         int length = s1.length();
         int i;
         ; i <= length - ; ++i)
             dp[i][i] = ;
         int j;
         ; i >=; --i)
         {
             ; j <=length-; ++j)
             {
                 if (s1[i] == s1[j])
                 {
                     dp[i][j] = dp[i + ][j - ] + ;
                 }
                 else
                 {
                     dp[i][j] = max(dp[i + ][j], dp[i][j - ]);
                 }
             }
         }
         cout << ][length - ] << endl;
     }
     ;
 }
 #include<iostream>
 #include<algorithm>
 #include<string>
 using namespace std;
 ][] = {  };
 int main(void)
 {
     string s1;
     while (cin >> s1)
     {
         int length = s1.length();
         int i;
         ; i <= length - ; ++i)
             dp[i][i] = ;
         int j;
         ; i >= ; --i)
         {
             ; j <= length - ; ++j)
             {
                 if (s1[i] != s1[j])
                 {
                     dp[i][j] = dp[i + ][j] + dp[i][j - ] - dp[i + ][j - ];
                 }
                 else
                 {
                     dp[i][j] = dp[i + ][j] + dp[i][j - ] - dp[i + ][j - ] + dp[i + ][j - ] + ;
                 }
             }
         }
         cout << ][length - ] << endl;
     }
     ;
 }
 #include<iostream>
 #include<algorithm>
 #include<string>
 using namespace std;
 ];           //长度
 bool ispalindrome(string s,int start,int end)
 {
     while (start <= end)
     {
         if (s[start] != s[end])
         {
             return false;
         }
         ++start;
         --end;
     }
     return true;
 }
 int main(void)
 {
     string s;
     while (cin >> s)
     {
         int length = s.length();
         int i;
         ; i <= length; ++i)
         {
             dp[i] = i - ;
             , i-) == true)
             {
                 dp[i] = ;
             }
         }
         int j;
         ; i <= length-; ++i)
         {
             ; j <= i; ++j)
             {
                 if (ispalindrome(s, j, i) == true)
                 {
                     dp[i + ] = min(dp[i + ], dp[j] + );
                 }
             }
         }
         cout << "需要分割的次数为" << dp[length] << "次"<<endl;
     }
     ;
 }

dp回文的更多相关文章

  1. poj 1159 dp回文串

    题意:添加最少的字符使之成为回文串 #include<cstdio> #include<iostream> #include<algorithm> #include ...

  2. POJ 3280 Cheapest Palindrome(DP 回文变形)

    题目链接:http://poj.org/problem?id=3280 题目大意:给定一个字符串,可以删除增加,每个操作都有代价,求出将字符串转换成回文串的最小代价 Sample Input 3 4 ...

  3. poj 3280 Cheapest Palindrome ---(DP 回文串)

    题目链接:http://poj.org/problem?id=3280 思路: dp[i][j] :=第i个字符到第j个字符之间形成回文串的最小费用. dp[i][j]=min(dp[i+1][j]+ ...

  4. HDU4745--区间DP+回文串

    这题的题意为,给你一个环状的字符串,有两只兔子分别从某任意的石头上开始跳跃.一只顺时针跳.一只逆时针跳.两只兔子每一次落脚处石头的质量都相同.兔子要一步一步的跳,且不能跳到之前跳到过的地方.总的来说, ...

  5. LightOJ - 1205:Palindromic Numbers (数位DP&回文串)

    A palindromic number or numeral palindrome is a 'symmetrical' number like 16461 that remains the sam ...

  6. CodeForces-245H:Queries for Number of Palindromes(3-14:区间DP||回文串)

    Times:5000ms: Memory limit:262144 kB 给定字符串S(|S|<=5000),下标由1开始.然后Q个问题(Q<=1e6),对于每个问题,给定L,R,回答区间 ...

  7. Palindrome Partition CodeForces - 932G 回文树+DP+(回文后缀的等差性质)

    题意: 给出一个长度为偶数的字符串S,要求把S分成k部分,其中k为任意偶数,设为a[1..k],且满足对于任意的i,有a[i]=a[k-i+1].问划分的方案数. n<=1000000 题解: ...

  8. GDUT 校赛02 dp回文串

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABSkAAAIhCAIAAAAtmainAAAgAElEQVR4nOzdfaxkd33n+ZJacstqa3 ...

  9. Lightoj1205——Palindromic Numbers(数位dp+回文数)

    A palindromic number or numeral palindrome is a 'symmetrical' number like 16461 that remains the sam ...

随机推荐

  1. ES6躬行记(21)——类的继承

    ES6的继承依然是基于原型的继承,但语法更为简洁清晰.通过一个extends关键字,就能描述两个类之间的继承关系(如下代码所示),在此关键字之前的Man是子类(即派生类),而在其之后的People是父 ...

  2. 关于CSS引入方式的详细见解

    关于CSS的发展史这里不做介绍.写博客的原因之一是想帮助那些与我一样喜欢纠结的初入前端的伙伴,希望自己写的帖子能对伙伴有些许帮助:原因之二这些帖子也算自己的一个知识的整理.现在还没有一定的顺序可循,但 ...

  3. 权限管理系统之SpringBoot集成LayUI实现后台管理首页

    万事开头难,昨天一直在构思用户权限管理系统怎么实现,实现哪些需求,采用什么技术等,也在网上百度了好多,计划使用SpringBoot + Mybatis + thymeleaf  + LayUI + S ...

  4. LeetCode 上最难的链表算法题,没有之一!

    题目来源于 LeetCode 第 23 号问题:合并 K 个排序链表. 该题在 LeetCode 官网上有关于链表的问题中标注为最难的一道题目:难度为 Hard ,通过率在链表 Hard 级别目前最低 ...

  5. Python 里的「单分派泛函数」到底是什么?

    泛型,如果你学过Java ,应该对它不陌生吧.但你可能不知道在 Python 中(3.4+ ),也可以实现简单的泛型函数. 在Python中只能实现基于单个(第一个)参数的数据类型来选择具体的实现方式 ...

  6. Spring异常分析

    异常报错 2019-01-14 10:40:18.427 ERROR 11776 --- [ost-startStop-1] o.s.b.w.e.t.TomcatStarter : Error sta ...

  7. Cayley图数据库的简介及使用

    图数据库   在如今数据库群雄逐鹿的时代中,非关系型数据库(NoSQL)已经占据了半壁江山,而图数据库(Graph Database)更是攻城略地,成为其中的佼佼者.   所谓图数据库,它应用图理论( ...

  8. Easyui 合并单元格

    onMyLoadSuccessText: function () { $(".datagrid-row").mouseover(function () { var titlestr ...

  9. C# 实体类转json数据过滤掉字段为null的字段

    C# 实体类转json数据过滤掉字段为null的字段 语法如下: var jsonSetting = new JsonSerializerSettings {NullValueHandling = N ...

  10. Spring中关于AOP的实践之AspectJ方式实现通知

    (本文中如有不当之处,恳请批评指正) AspectJ方式的简化了通知的出现复杂度.但是对配置文件的操作复杂度有了一定的提升 一. 配置通知 package com.xkx.adviceDemo; im ...