【发布时间】:2020-11-05 19:47:29
【问题描述】:
我有一个包含随机生成数字的数组,我需要找到并存储至少出现 x 次的数字。 (我可以很容易地找到 x,这并不重要。它将是一个固定的数量)。该数组将包含大约 100-200 个元素。
我知道我必须使用循环,但我不确定如何构建它的主体。我对 C 编程比较陌生,所以这可能相当简单。任何帮助表示赞赏。
【问题讨论】:
-
到目前为止你做了什么?发布您的代码
标签: c
我有一个包含随机生成数字的数组,我需要找到并存储至少出现 x 次的数字。 (我可以很容易地找到 x,这并不重要。它将是一个固定的数量)。该数组将包含大约 100-200 个元素。
我知道我必须使用循环,但我不确定如何构建它的主体。我对 C 编程比较陌生,所以这可能相当简单。任何帮助表示赞赏。
【问题讨论】:
标签: c
这里描述了一种方法。
对数组进行排序。为此,您可以使用 qsort - 它既简单又快速。
在计算相同元素的同时迭代已排序的数组,例如:
int cur = arr[0];
int count = 1;
for (size_t i = 1; i < SIZE_ARR; ++i)
{
if (cur == arr[i])
{
++count;
}
else
{
if (count >= X)
{
// Save cur to result array
}
count = 1;
cur = arr[i];
}
}
if (count >= X)
{
// Save cur to result array
}
【讨论】:
我添加了伪代码,您可以轻松地将其转换为 C。这假设所有随机数都是正整数,并且不会太大。
create an array count of maximum-possible-random-number int elements initialised to 0.
for every entry in rng array:
count[entry]++
for every entry in count array:
if(entry >= x)
print(entry's index)
【讨论】: