【发布时间】:2020-04-05 03:52:26
【问题描述】:
我做了一个简单的随机程序,生成一个 0 到 9 之间的随机数
int random_x;
int main(int argc, char* argv[])
{
srand ( time(NULL) );
for (int t=0;t<10;t++)
{
random_x = rand() % 10; //generate 10 random integers between 0 and 10
cout << "\n" << random_x;
}
下一个阶段是设置一个整数数组来计算每个数字出现了多少。例如,如果随机数是 144566888,那么输出将是
1 appears 1 time
4 appears 2 times
5 appears 1 time
6 appears 2 times
8 appears 3 times
这是我尝试过的,但它返回“数字出现 0 次”
int count[random_x] = {0};
while ( random_x > 0) { //loop to return how many times a number appears
count[ random_x % 10]++;
random_x = random_x / 10;
cout <<"Digit occurs: " << random_x << " times" << endl;
}
【问题讨论】:
-
请注意,您生成了 10 个随机数,但在您的示例中仅包含 9 个。此外,您需要找到数组中的不同元素以及每个元素的计数/频率。
-
@Anirban166 我该怎么做呢?我不确定
-
您可以使用
unordered_set来存储唯一值并计算由集合大小给定的数组中的出现次数。您是否受到一些时间复杂度限制?这可以在两个循环中实现,但复杂度将是二次的。如果一定要使用优化的逻辑,我更喜欢第一种方式。 (它存储独特的元素) -
@Anirban166 不,我没有时间限制
-
好吧,我会尽快写一个解决方案。
标签: c++