c++ - 在不使用另一个数组或更改给定数组的元素的情况下计算数组中所有元素的频率
问题描述
你好,所以这个问题的问题是你不应该使用另一个数组或函数,不要更改给定数组的元素或对它们进行排序,我们不知道元素的间隔和旁注我不应该显示数字两次
例如,如果我们有 a[10]={1,2,1,3,1,5,2,4,3,1} 它应该打印出:
1 --- 4
2 --- 2
3 --- 2
4 --- 1
5 --- 1
我编写了一个使用两个 for 循环查找重复数字的代码,但我不知道如何阻止它重复相同的答案以及如何让它显示计数器
这是代码:
#include<iostream>
using namespace std;
int main()
{
int arr[5];
int size = sizeof(arr) / sizeof(arr[0]);
for (int i = 0; i < 5; i++)
{
cout << "Enter " << i << " number:";
cin >> arr[i];
}
{
for (int i = 0; i < size; i++)
for (int j = i + 1; j < size; j++)
if (arr[i] == arr[j])
cout << " Repeating elements are " << arr[i] << " " << endl;
}
return 0;
}
解决方案
请参阅下面的代码。
为简洁起见,我将数组设为常量。您只需复制粘贴从用户输入中读取的代码即可。
诀窍是检查每i
一个这是第一次a[i]
找到的。如果之前已经找到,那么它已经计入上一次迭代,现在可以跳过。
#include <iostream>
using namespace std;
int main()
{
const int a[]={1,2,1,3,1,5,2,4,3,1};
const int size = sizeof(a) / sizeof(a[0]);
for (int i = 0; i < size; i++)
{
bool duplicate = false;
for (int j = 0; j < i; j++)
{
if (a[i] == a[j])
{
duplicate = true;
break;
}
}
if (duplicate)
{
continue;
}
int count = 1;
for (int j = i + 1; j < size; j++)
{
if (a[i] == a[j])
{
count++;
}
}
cout << a[i] << " -- " << count << '\n';
}
}
推荐阅读
- javascript - 在完整日历中的第一个日期未显示重复事件
- html - 表格中的 TH 是否允许使用标题?
- c - 使用带有联合的类型双关语的问题
- python - 如何使用 PyTorch 并行化 CNN 对图像的评估
- r - 将视觉元素(图标)添加到 ggpplot 标签
- ckeditor - ckeditor 自动在视觉上调整拖放图像的大小
- java - Azure Active Directory 的 Spring Security Oauth2
- sql - 在 SQL Server 中将 Varbinary 转换为 PDF
- dkim - 我可以只为一台特定的服务器配置 DKIM 吗?
- extjs - EXTJS:Ext.widget 和 Ext.create 有什么区别?