我正在尝试这个问题:
假设您有三个字符串:X,Y和Z,其中| X | = n,| Y | = m,| Z | = n + mZ被认为是X和Y的混合,当且仅当Z可以通过交叉来自X和Y的字符以保持每个字符串的字符从左到右排序的方式形成。
提供一种有效的算法,确定Z是否是X和Y的随机数。
提示:您构造的动态编程矩阵的值应为布尔值,而不是数值
我不明白为什么每个人都提出动态编程递归解决方案。
我们不能只做以下n + m算法:
保持两个指针i和j,i指向字符串x中的字符,j表示字符串y。
通过z迭代(使用迭代器k),对于每个char z [k],如果它匹配x [i]增量i,如果它匹配y [j]增量j
2.1。如果k> i + j然后返回false
2.2。如果k == z.length()和i或j!= x.length(),y.length()则分别返回false
返回true
根据Tanmay Patil的帖子编辑
答案 0 :(得分:3)
嗯,问题陈述清楚地说明了
提供有效的动态编程算法
那应该解释
每个人都在展示动态编程递归解决方案
即使这样,它也可以像你提到的那样以迭代的方式解决。并且它不是n ^ 2算法,它的时间复杂度是n + m
祝你好运。答案 1 :(得分:0)
你是对的。
你永远不会必须使用递归算法。你可以自由地这样做,但你可以总是使用一个交互式例程。
在此示例中,您可以使用数组或分配足够大的内存块来保存结果。