Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 关于如何根据给定条件找到标记给定数组中所有元素的最小步骤数,有什么提示吗? 两个整数 n> p>首先考虑如何回答 k>代码>= n>代码>(即对子序列的长度没有任何有效限制)。您的答案应该是,最小步数是数组中不同值的数目 然后考虑这是如何随着 K < /代码>的变化而减少的;重要的是,对于a中存在的每个值n,需要覆盖选择集{i:a[i]==n}的K长度间隔的副本数。“ k < /代码>长度的算法沿 a ,在每个位置停用 [i] 尚未覆盖该值 n>代码>完全正确。_C_Algorithm - Fatal编程技术网

C 关于如何根据给定条件找到标记给定数组中所有元素的最小步骤数,有什么提示吗? 两个整数 n> p>首先考虑如何回答 k>代码>= n>代码>(即对子序列的长度没有任何有效限制)。您的答案应该是,最小步数是数组中不同值的数目 然后考虑这是如何随着 K < /代码>的变化而减少的;重要的是,对于a中存在的每个值n,需要覆盖选择集{i:a[i]==n}的K长度间隔的副本数。“ k < /代码>长度的算法沿 a ,在每个位置停用 [i] 尚未覆盖该值 n>代码>完全正确。

C 关于如何根据给定条件找到标记给定数组中所有元素的最小步骤数,有什么提示吗? 两个整数 n> p>首先考虑如何回答 k>代码>= n>代码>(即对子序列的长度没有任何有效限制)。您的答案应该是,最小步数是数组中不同值的数目 然后考虑这是如何随着 K < /代码>的变化而减少的;重要的是,对于a中存在的每个值n,需要覆盖选择集{i:a[i]==n}的K长度间隔的副本数。“ k < /代码>长度的算法沿 a ,在每个位置停用 [i] 尚未覆盖该值 n>代码>完全正确。,c,algorithm,C,Algorithm,首先考虑如何回答 k>代码>= n>代码>(即对子序列的长度没有任何有效限制)。您的答案应该是,最小步数是数组中不同值的数目 然后考虑这是如何变化的: k>代码>减小;所有重要的是,你需要覆盖多少个副本>代码> >代码>长度间隔,你需要覆盖选择集 {i:a[i]=n}。对于A中存在的每个值n。沿着A行走K长度间隔,在每个位置停下来A[i]的简单算法尚未涵盖的n值完全足够。正如我们看到的,最小步数=n/k或n/k+1,最大步数=(n+k-1)。 我们必须优化步骤的总数,这取决于我们过去所做选择的历

首先考虑如何回答<代码> k>代码>=<代码> n>代码>(即对子序列的长度没有任何有效限制)。您的答案应该是,最小步数是数组中不同值的数目


然后考虑这是如何变化的:<代码> k>代码>减小;所有重要的是,你需要覆盖多少个副本>代码> >代码>长度间隔,你需要覆盖选择集<代码> {i:a[i]=n}。对于

A
中存在的每个值
n
。沿着
A
行走
K
长度间隔,在每个位置停下来
A[i]的简单算法
尚未涵盖的
n
值完全足够。

正如我们看到的,最小步数=n/k或n/k+1,最大步数=(n+k-1)。 我们必须优化步骤的总数,这取决于我们过去所做选择的历史记录,即动态解决方案


有关动力学理论教程,请参见

,因为我们可以看到最小步数=N/k或N/k+1,最大步数=(N+k-1)。 我们必须优化步骤的总数,这取决于我们过去所做选择的历史记录,即动态解决方案

有关动力学理论教程,请参见

可在O(n)中求解,如下所示: 跟踪每个元素a[i]。如果之前没有跟踪a[i],则映射数字及其索引和递增计数器。如果之前跟踪过数字,则检查其(最后一个索引-当前索引)>=K如果是,则更新索引并递增计数。打印计数。 Map STL将是有益的。

可以在O(n)中解决,如下所示: 跟踪每个元素a[i]。如果之前没有跟踪a[i],则映射数字及其索引和递增计数器。如果之前跟踪过数字,则检查其(最后一个索引-当前索引)>=K如果是,则更新索引并递增计数。打印计数。
映射STL将是有益的。

是的,但请帮助我找到一个快速解决方案。构造样本输入非常容易,因此步骤数将为N-1。为什么希望能够找到一个更快的解决方案?@HighPerformanceMark how N-1?是的,但请帮助我找到一个快速解决方案。构造样本输入非常容易,因此步骤的数量将是N-1。为什么你希望能够找到更快的解决方案?@高性能数据库N-1?抱歉,但是我不能理解你的答案。你能解释一下吗?@ HELDECODER孤立地考虑每一个不同的值<代码> V< /代码>。检查你需要覆盖多少长度的子序列<代码> K <代码>。所有位置
i
A[i]==v
@danielfisher现在我知道了。:)对不起,我不能理解你的答案。你能再解释一下吗?@ HELDECODER孤立地考虑每一个不同的值<代码> V < /代码>。检查长度
K
的多少子序列,您需要用
A[i]==v
@danielfisher覆盖所有位置
i
,现在我知道了。:)