鱼C论坛

 找回密码
 立即注册
查看: 1210|回复: 6

算法题有点问题

[复制链接]
发表于 2023-6-4 10:51:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 啊这啧啧啧 于 2023-6-4 10:59 编辑

.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-6-4 10:53:26 | 显示全部楼层
本帖最后由 啊这啧啧啧 于 2023-6-4 10:59 编辑

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-6-4 11:03:39 | 显示全部楼层
你有灌水的嫌疑
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-4 11:12:07 | 显示全部楼层
?????
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-6-4 11:19:47 | 显示全部楼层
本帖最后由 isdkz 于 2023-6-4 11:20 编辑

[b]这个问题看起来像是一种子序列计数问题。具体来说,它是一个问“有多少种方法,能够通过移除字符串S的前缀和后缀,使得剩下的子字符串T为原字符串S的子序列”。这个问题可以通过动态规划解决。

这里是一个可能的算法步骤:

首先,定义dp[i][j][k][l]为S[i...j]的子串中,T[k...l]的前缀和后缀的最小长度。

然后,我们可以通过以下递归公式来更新dp:

1. 如果S[i]==T[k],则dp[i][j][k][l] = min(dp[i][j][k][l], dp[i+1][j][k+1][l]+1)。
2. 如果S[j]==T[l],则dp[i][j][k][l] = min(dp[i][j][k][l], dp[i][j-1][k][l-1]+1)。

初始化状态dp[i][j][k][l]为一个大数,表示无法从S[i...j]中找到T[k...l]的子序列。

最后,对于任何i和j,只要dp[i][j][0][n-1] <= j - i + 1(这里n表示T的长度),那么就可以认为我们找到了一种合理的精简方法。通过计算满足这个条件的(i, j)对的数量,我们就可以得到问题的答案。

注意,该算法的时间复杂度为O(n^4),其中n为字符串S的长度。这对于长度在100以内的字符串来说是可以接受的,但对于更长的字符串可能会有性能问题。因此,如果你的输入非常大,可能需要寻找更有效率的算法或者进行一些优化。

此外,该算法没有考虑到T中字符的顺序,如果需要考虑顺序,可能需要稍微修改这个算法。例如,你可以使用更复杂的数据结构来快速查询S中字符的位置,然后使用类似的动态规划方法来解决这个问题。[/b]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2023-6-4 14:55:40 | 显示全部楼层
isdkz 发表于 2023-6-4 11:19
这个问题看起来像是一种子序列计数问题。具体来说,它是一个问“有多少种方法,能够通过移除字符串S的前缀 ...

蛤?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-4 14:56:40 | 显示全部楼层


他的帖子原本是有内容的,应该是他后面改了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-18 05:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表