FOJ 2172 (DP+水数据+水题解 )

Description

  大师兄在取经途中迷上了ACM-ICPC,稍不留神,师傅就被妖怪抓走了。

  大师兄并不着急去救师傅,在虐这道简单题:

  有两个字符串A和B,每一次可以选择以下操作中的一种,只对字符串A进行操作,用最少的操作使得字符串A与字符串B相等:

在字符串A中插入一个字符;

在字符串A中删除一个字符;

将字符串A复制,得到字符串A的一个拷贝C,将字符串C接在字符串A后面。

Input

  每组输入数据包含两行,第一个一个字符串A,第二行一个字符串B。输入字符串最大长度为10。

如果最少操作次数大于15,则输出”more than 15 operations.”。

Output

  对每组输入数据,输出最少的操作次数,使得字符串A与字符串B相等。

Sample Input

a aaaa ac aaaaa

Sample Output

2 4



分析:  提前说明,此题不仅后台数据水,网上题解也是巨错。希望看到的人不要被这道题骗了。


首先是网上题解 是错误的,最后一个操作是不可能由一个DP【i】【j/2】 推出来的。  

不信的话可以试试这组数据:

abc

abcdabc


按照题意我的理解 最小操作次数是2次,首先abc->(翻倍)abcabc->(插入)abcdabc


而网上给的标程答案是 4,而且后台数据没有more than 15 operations.这种情况。


所以根据我对此题的理解这道题应该是一个记忆化搜索+状态压缩。 双向 bfs 以字符串A和字符串B为初始状态开始搜索,然后搜索所有的下一步操作可到达的状态,并记录。

搜索停止条件:1,在总步数>15的条件下没有成功搜到一个公共状态。2,在总步数15步内 搜到一个公共状态。


希望此题能修改一下,不要被网上所谓正确代码误解。

但是作为DP练思维还是可以的。



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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值