啊这啧啧啧 发表于 2023-6-4 10:51:56

算法题有点问题

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

.

啊这啧啧啧 发表于 2023-6-4 10:53:26

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

liuhongrun2022 发表于 2023-6-4 11:03:39

你有灌水的嫌疑

陶远航 发表于 2023-6-4 11:12:07

?????

isdkz 发表于 2023-6-4 11:19:47

本帖最后由 isdkz 于 2023-6-4 11:20 编辑

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

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

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

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

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

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

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

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

此外,该算法没有考虑到T中字符的顺序,如果需要考虑顺序,可能需要稍微修改这个算法。例如,你可以使用更复杂的数据结构来快速查询S中字符的位置,然后使用类似的动态规划方法来解决这个问题。

liuhongrun2022 发表于 2023-6-4 14:55:40

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

蛤?

isdkz 发表于 2023-6-4 14:56:40

liuhongrun2022 发表于 2023-6-4 14:55
蛤?

他的帖子原本是有内容的,应该是他后面改了{:10_250:}
页: [1]
查看完整版本: 算法题有点问题