回文串最小划分 dp
来源:互联网 发布:淘宝3c证书是什么 编辑:程序博客网 时间:2024/06/04 17:53
#include<iostream>
#include<cstring>
using namespace std;
string str;
int dp[10000];
int flag;
const int INF=10000;
int main()
{
int time;
cin>>time;
while(time--)
{
cin>>str;
const char *a0="0";
str.insert(0,a0);
int len=str.size()-1;
dp[0]=0;
for(int i=1;i<=len;i++)dp[i]=INF;
for(int i=1;i<=len;i++)
{
for(int j=1;j<=i;j++)
{
flag=0;
for(int k=0;k<=(i-j)/2;k++)
{
if(str[i-k]!=str[j+k]){flag=1;break;}
}
if(!flag){dp[i]=min(dp[i],dp[j-1]+1);}
}
}for(int i=1;i<=len;i++)cout<<dp[i];
cout<<endl;
}return 0;
}
#include<cstring>
using namespace std;
string str;
int dp[10000];
int flag;
const int INF=10000;
int main()
{
int time;
cin>>time;
while(time--)
{
cin>>str;
const char *a0="0";
str.insert(0,a0);
int len=str.size()-1;
dp[0]=0;
for(int i=1;i<=len;i++)dp[i]=INF;
for(int i=1;i<=len;i++)
{
for(int j=1;j<=i;j++)
{
flag=0;
for(int k=0;k<=(i-j)/2;k++)
{
if(str[i-k]!=str[j+k]){flag=1;break;}
}
if(!flag){dp[i]=min(dp[i],dp[j-1]+1);}
}
}for(int i=1;i<=len;i++)cout<<dp[i];
cout<<endl;
}return 0;
}
阅读全文
0 0
- 回文串最小划分 dp
- 最小回文串划分
- 回文最小划分次数(dp之路)
- uva11584 dp最少回文串划分
- 51nod 1154 回文串划分 (DP)
- UVa 11584 划分回文串( 简单dp )
- 【dp】51nod 1154 回文串划分
- 1154 回文串划分(dp)
- 51nod 1154回文串划分 dp+递推
- uva 11584Partitioning by Palindromes dp(最少回文串划分)
- 【51Nod】1154 - 回文串划分(dp)
- 51NOD 1154 回文串划分 【DP+Manacher】
- 51nod 1154 回文串划分(dp)
- 划分dp,区间差最小
- 1154 回文串划分
- 回文串划分
- 回文串划分
- 1154 回文串划分
- MySQL中的datetime与timestamp比较
- 图像处理12:获取程序执行时间
- 变量在计算机中的存储方式。
- 使用 sqlalchemy 时如何配置使用 postgresql 的 uuid 类型
- Java 线程同步
- 回文串最小划分 dp
- 文献学习-Generating Hard Instances of Lattice Problems
- MapReduce任务的优化
- bzoj 1821 部落划分
- 我的常用笔记
- 消息代理RabbitMQ——介绍篇
- Java封装入门讲解(深入浅出)
- javabean总结
- HDU 1875 畅通工程再续(最小生成树-Kruskal)