给定字符串 s, 将 s 划分成子串, 使得每个子串为回文子串, 求最小划分次数

本文介绍了FIND-MIN-CUT算法,用于将字符串s划分为回文子串的最小次数。通过双层循环,检查所有子串是否为回文,并使用动态规划记录结果。当字符串长度为1或2时,直接判断;否则,检查当前子串是否为回文并结合子串中间部分的回文情况。若为回文,标记最小划分次数为0,否则遍历子串并计算最小划分次数。
摘要由CSDN通过智能技术生成

 


伪代码

FIND-MIN-CUT(s)

1.      i←0, j←0

2.      fori<n or j<n

3.      C[i][j]← 0

4.      i←1, j←0

5.      fori<n

6.         forj<n-i+1

7.            K=i+j-1

8.            If n==1

9.                Then C[j][k]=true

10.         Elseif n==2

11.             Then C[j][k]=s[j:k]是否为回文

12.         ElseC[j][k]=s[j][k]是否为回文&&C[j+1][k-1]

13.         If C[j][k]   then flag[j][k]=0

14.         Else

15.              For(m←j)<k

16.                  Min=flag[j][m]+flag[m+1][k]+1

17.   return flag[0][n-1]



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值