构造字串分析和总结.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

【题2】构造字串

生成长度为n的字串,其字符从26个英文字母的前p(p≤26)个字母中选取,使得没有相邻的子序列相等。例如p=3,n=5时

‘abCba’满足条件

‘abCbC’不满足条件输入:n,p

输出:所有满足条件的字串

题解

1、检查当前字串是否符合条件

设当前串s=s‥s s且s‥s

合理。按照下述方法判断s是否仍然保持其合理性质:

1 m-1m 1 m-1

分别判断s的后缀中长度为1的两个相邻子串s

m-1

与s是否相等;长度为2的两个相邻子串s

m-3

s

m-2

与s s

是否相等,……‥,长度为?m?的两个相邻子串s‥s

与s ‥s

是否相等。即s ‥s

m

??2??

1 ?m?

?2?

?m? m

?1?2

?1

m-2l+1

m-1

? ? ? ?

与s ‥s

是否相等(1≤l≤?m?)。若其中一旦出现了两个相邻子串相等的情况,则说明s‥s

不合理;

m-l+1 m

??2?? 1 m

若经过?m?次判断后未出现不合理情况,则说明s‥s

满足条件。

??2?? 1 m

2、回溯搜素满足条件的所有字串

我们从空串出发,逐个字符地延长字串。若当前字符添入后使得字串保持合理的性质,则添入该字符;否则改变字串。

状态:待扩展的字母序号at。实际上字串s亦参与了递归运算,但是由于该变量的存储量太大,因此我们将s设为全局变量;

边界条件和目标状态:产生了一个满足条件的字串,即at=n+1;搜索范围:第at位置可填的字母集{a..chr(ord(a)+p-1)};约束条件:当前字串没有相邻子串相等的情况

var

n,p:integer; {字串长度和可选字母的个数}

tl:longint; {满足条件的字串数}

ed:char; {可选字母集中的最大字母}

s:string; { 满足条件的字串}

proceduresolve(at:integer); {递归扩展第at个字母}var

ch:char;i:integer;begin

ifat=n+1 {若产生了一个满足条件的字串,则输出,满足条件的字串数+1}thenbegin

writeln(f,s);inc(tl);

exit {回溯}

end;{then}

forch←atoeddo {搜索每一个可填字母}

begins←s+ch;

i←1; {检查当前字串是否符合条件}

while(i=atdiv2)and

(copy(s,length(s)-i+1,i)copy(s,length(s)-2*i+1,i))doinc(i);

ifiatdiv2thensolve(at+1); {若当前字串符合条件,则递归扩展下一个字母}delete(s,length(s),1) {恢复填前的字串}

end{for}end;{solve}

begin

readln(n,p); {输入字串长度和前缀长短}

ed←chr(ord(a)+p-1); {计算可选字母集中的最大字母}s←;tl←0; {满足条件的字串初始化为空,字串数为0}solve(1); {从第1个字母开始递归计算所有满足条件的字串}writeln(Total:,tl); {输出满足条件的字串数}

end.{main}

在搜索过程中,如果扩展子状态的过程是在不同情况(即每种情况下的约束条件、扩展规则或搜索范围不同)下进行,则对当前状态分情形递归搜索

文档评论(0)

hao187 + 关注
官方认证
文档贡献者

该用户很懒,什么也没介绍

认证主体武汉豪锦宏商务信息咨询服务有限公司
IP属地上海
统一社会信用代码/组织机构代码
91420100MA4F3KHG8Q

1亿VIP精品文档

相关文档