微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我怎样才能用贪心得到Om + n?

如何解决我怎样才能用贪心得到Om + n?

在这种情况下,如何设计算法贪婪O(m+n)

给出两个安排L1L2,其中| L1 | = n| L2 | = m

如果可以从L2删除元素以获得L1,则

L1L2的子序列。这意味着存在m个索引ik∈ [0..n],因此每个L1 [ik] = L2 [j]都有j∈ [0..m]。在O (n + m)中设计一个贪婪算法,以检测L2是否是L1的子序列,并在{{1}的情况下输出ik中的L1索引}是L2的子序列。

示例:

L1

我一直在用这个做经典的代码

Input L1 = [1 2 3 4 5 6 7 8 9 10] L2 = [3 5 7 9] Output ik = [2 4 6 8]

Input L1 = [2 1 4 3 6 5 7 8 9 10] L2 = [1 6 5 10] Output ik = [1 4 5 9]

Input L1 = [1 2 3 4 5 6 7 8 9 10] L2 = [1 5 9 12] Output L2 is not subsequence of L1

但是我不知道如何使用贪婪来获取bool isSubsequence(string str1,string str2) { int i=0; int j=0; while (j<str1.length() && i<str2.length()){ if(str1[j]==str2[i]){ cout<<i<<" "; j++; } i++; } return j==str1.length(); } 。 谢谢

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。