设f[i][j]为区间(i,j)的最短长度,然后转移的话一个是f[i][j]=min(j-i+1,f[i][k]+f[k+1][j]),还有就是把(k+1,j)合并到(i,k)上,需要判断一下字符串相同,然后转移的时候注意字符串计数的那个数字也是按位数算的,要计算一下位数

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int N=105;
int n,f[N][N];
char s[N];
bool ok(int l1,int r1,int l2,int r2)
{
if((r1-l1+1)%(r2-l2+1)!=0)
return 0;
for(int i=l1;i<=r1;i++)
if(s[i]!=s[(i-l1)%(r2-l2+1)+l2])
return 0;
return 1;
}
int clc(int x)
{
int r=0;
while(x)
r++,x/=10;
return r;
}
int main()
{
scanf("%s",s+1);
n=strlen(s+1);
for(int i=1;i<=n;i++)
f[i][i]=1;
for(int l=2;l<=n;l++)
for(int i=1;i+l-1<=n;i++)
{
int j=i+l-1;
f[i][j]=l;
for(int k=i;k<j;k++)
{
f[i][j]=min(f[i][j],f[i][k]+f[k+1][j]);
if(ok(k+1,j,i,k))
f[i][j]=min(f[i][j],f[i][k]+2+clc((j-k)/(k-i+1)+1));
}
}
printf("%d\n",f[1][n]);
return 0;
}

最新文章

  1. Linux系统实战项目——sudo日志审计
  2. 在Activity和Application中使用SharedPreferences存储数据
  3. 在 SharePoint 2013 中配置 Office Web Apps
  4. 在 Server 端存取 Excel 檔案的利器:NPOI Library
  5. python 练习 29
  6. freeglut第一步
  7. 4630 no pain no game 树状数组
  8. CentOs7下systemd管理知识要点
  9. Linux 内核优化
  10. php中的数组遍历的几种方式
  11. cat .git/config查看远端服务器信息(git的配置信息:远端服务器连接信息)
  12. Windows系统下安装Redis
  13. Java反射实现原理分析
  14. PySpider框架的基本用法
  15. PyQt PySide QListWidget 添加自定义 widget
  16. mysql客户端工具
  17. ElasticSearch 在3节点集群的启动
  18. AAC编码
  19. 在Oracle/SQL Service中通过Function返回Table
  20. 【刷题】BZOJ 2434 [Noi2011]阿狸的打字机

热门文章

  1. Classification and logistic regression
  2. android 内部文件读取
  3. Yelp面试题目
  4. flex 操作xml 实现增删改查 .
  5. Golang之bytes.buffer
  6. hiberinate二级缓存
  7. 几个简单的程序看PHP的垃圾回收机制
  8. webpack的安装个配置
  9. appium-java-api
  10. goroutine pool,WaitGroup,chan 示例