回文串划分
来源:互联网 发布:mysql text 最大长度 编辑:程序博客网 时间:2024/06/05 22:41
<span style="font-family: Arial, Helvetica, sans-serif;">#include<iostream></span>
#include<vector>#include<string>#include<cmath>using namespace std;int strDivided(string &s){int n=s.length();
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="white-space:pre"></span>//dp[i][j]代表字符串i-j是否为回文串</span>
vector<vector<int>> dp(n,vector<int>(n,0));
<span style="white-space:pre"></span>//num[i]代表0-i子串中最少回文串划分vector<int> num(n,0);for(int i=0;i!=n;i++){dp[i][i]=1;if(i!=n-1&&s[i]==s[i+1]){dp[i][i+1]=1;}}for(int i=0;i!=n;i++){num[i]=i+1;}for(int r=3;r<=n;r++){int k=n-r;for(int i=0;i<=k;i++){if(s[i]==s[i+r-1]&&dp[i+1][i+r-2]){dp[i][i+r-1]=1;}}}for(int i=0;i!=n;i++){if(i!=0){num[i]=min(num[i],num[i-1]+1);}for(int j=i+1;j!=n;j++){if(s[i]==s[j]&&(j-i<3||dp[i+1][j-1])){if(i==0){num[j]=1;}else{num[j]=min(num[j],num[i-1]+1);}}}}return num[n-1];}int main(){string s;cin>>s;cout<<strDivided(s)<<endl;return 0;}
0 0
- 1154 回文串划分
- 回文串划分
- 回文串划分
- 1154 回文串划分
- 最小回文串划分
- 回文串划分
- uva 11594 划分回文串
- 51nod1154回文串划分
- 回文串最少划分数
- UVA 11584 划分回文串
- 回文串最小划分 dp
- 【51Nod1154】回文串划分
- uva11584 dp最少回文串划分
- 回文子串划分 Palindrome Partitioning
- 51nod 1154 回文串划分 (DP)
- 51nod 1154:回文串划分
- UVa 11584 划分回文串( 简单dp )
- 51nod 1154 回文串划分
- 使用RMAN异机恢复磁带库的备份文件至文件系统
- Oracle 通过出生日期计算年龄
- Mac系统下Android生成keystore
- 归并排序思想应用
- Java Web学习——问题罗列
- 回文串划分
- 高并发常见的解决方案
- 关于linux中使用vim打开文件出现^M的解决方法
- poj 2777 Count Color 线段树区间更新
- 自定义TextView显示指定行数
- MAC ping IP 地址(ping通/ping不通)
- Tomcat7配置数据源
- 自定义TextView处理任意时间长按短按的事件
- java G1垃圾收集器