博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
字符串折叠
阅读量:5896 次
发布时间:2019-06-19

本文共 1578 字,大约阅读时间需要 5 分钟。

折叠的定义如下: 1. 一个字符串可以看成它自身的折叠。记作S @ S

                        2. X(S)是X(X>1)个S 连接在一起的串的折叠。记作X(S)即SSSS…S(X 个S)。

                        3. 如果A @ A’, B @ B’,则AB @ A’B’ 例如,因为3(A) = AAA, 2(B) = BB,所以3(A)C2(B) @ AAACBB,

                            而2(3(A)C)2(B) @AAACAAACBB

                       给一个字符串, 求它的最短折叠。

一道DP题目,考试的时候在折叠时的转移搞乱了——

用f[i,j]表示从i到j折叠后的最短长度,那么f[i,j]=min{f[i,k]+f[k+1,j]  x<=k<y

                                                                    f[i,k]+2+length((y-x+1) div (k-i+1))  s(i,k)是s(i,j)的一个折叠单位}

记忆化搜索较好实现,我的搜索过程中写的字符串变量,节点多时会run time error,但结果一定正确,只要字符串尽量开在外面就行了,领会精神。

View Code
1 program zd(input,output);  2 var  3    s   : ansistring;  4    f   : array[0..101,0..101] of longint;  5 procedure init;  6 var  7    i,j : longint;  8 begin  9    readln(s); 10    for i:=1 to length(s) do 11       for j:=1 to length(s) do 12      if i=j then 13         f[i,j]:=1 14      else 15         f[i,j]:=-1; 16 end; {
init } 17 function try(ss : ansistring; s1:ansistring ):boolean; 18 begin 19 try:=true; 20 while ss<>'' do 21 begin 22 if pos(s1,ss)=1 then 23 delete(ss,1,length(s1)) 24 else 25 exit(false); 26 end; 27 end; {
try } 28 function min(aa,bb: longint ):longint; 29 begin 30 if aa
-1 then 40 exit(f[x,y]); 41 f[x,y]:=y-x+1; 42 for k:=x to y-1 do 43 begin 44 tmp:=dfs(x,k)+dfs(k+1,y); 45 if tmp
>1) do 50 if (length(s1) mod (k-x+1)=0) then 51 begin 52 s2:=copy(s,x,k-x+1); 53 if try(s1,s2) then 54 begin 55 tmp:=dfs(x,k); 56 str(length(s1) div (k-x+1),s3); 57 if tmp+2+length(s3)

转载于:https://www.cnblogs.com/neverforget/archive/2012/03/14/2396248.html

你可能感兴趣的文章
使用UITableView实现图片视差效果
查看>>
CentOS RHEL 安装 Tomcat 7
查看>>
erlang如何有效地监视大量的并发连接
查看>>
Windows下Mysql5.6启用监控执行脚本的日志
查看>>
Apple Developer Registration and DUNS Number Not Accepted
查看>>
motion移植
查看>>
Hadoop学习笔记系列文章导航
查看>>
转一贴,今天实在写累了,也看累了--【Python异步非阻塞IO多路复用Select/Poll/Epoll使用】...
查看>>
Codeforces Round #290 (Div. 2) C. Fox And Names dfs
查看>>
iOS开发-NSOperation与GCD区别
查看>>
扩展方法使用
查看>>
Win7 64位 php-5.5.13+Apache 2.4.9+mysql-5.6.19 配置
查看>>
HOJ 2245 浮游三角胞(数学啊 )
查看>>
spring mvc 和ajax异步交互完整实例
查看>>
不同页面之间实现参数传递的几种方式讨论
查看>>
程序员进阶之路—如何独当一面
查看>>
SpringMVC中ModelAndView addObject()设置的值jsp取不到的问题
查看>>
Prometheus : 入门
查看>>
使用 PowerShell 创建和修改 ExpressRoute 线路
查看>>
PHP如何学习?
查看>>