bt字符串动态规划

 写博客真的很有意思hhh。

这道题让我感觉到了动态规划的魅力。

//dp[i][j]是将含i个字符的A字符串转化为含j字符的B字符串所需要的最少步骤
//接下来是状态转移
//易得dp[i][j]=dp[i-1][j]+1;
//这里解释下为什么
//将含i-1个字符的A字符串进行转换成含j个字符的B字符串为dp[i-1][j]
//那么接下来还差最后一个字符我们就直接添加或删除
//因为i-1可能大于j也可能小于j的是吧
//当他大于j的时候就直接删除多余的那个就可以了
//小于的时候同理
//道理都是一样的
//那么如果是dp[i-1][j-1]呢
//显然我们不能忽略这种情况啊
//dp[i][j]=dp[i-1][j-1]  +1或+0 这要看他们第i位和第j位的字符是否相等了
//理论存在实践开始

 

hhh,dfs里面的出口很有趣,不是吗?

在main函数里面我们把dp都搞成了-1,在函数的不断递归之下我们最终确定了某些值,见于第二行和第三行。

为什么仅仅通过这几行就可以构建一栋宏伟的大厦呢?

可以分析一下。

首先,以严密的逻辑确定了三种类型的子问题(见上文)

其次,不访我们想象一下,这道题最简单的情况不就是,0字符转换为字符串吗?

这毫无疑问是最简单的情况吧,其他所有的复杂情况都拜倒在他的石榴裙下,因此可以此情况来添砖加瓦,构成一栋大厦。

逻辑成立,就能成功。

这便是递归和动态转移的魅力~~。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值