【发布时间】:2018-05-08 06:13:41
【问题描述】:
我有一排十个数字,例如:
5 5 6 7 5 9 4 2 2 7
现在我想要一个程序,它可以找到所有重复项并在控制台中给出它们,例如 3 乘以 5、2 乘以 2、2 乘以 7。 虽然我确实编写了一种算法,可以在一行数字中找到重复项,但我无法按照描述在控制台中给出它们。我的程序会输出:
3 times 5
2 times 5
2 times 7
2 times 2
我该如何解决这个问题?
#include <iostream>
using namespace std;
int main()
{
int arr[10];
int i,j;
int z = 1;
for(i = 0; i < 10; i++) {
cin >> arr[i];
}
for(i = 0; i < 10; i++){
for(j = i+1; j < 10; j++){
if(arr[i] == arr[j]){
z++;
}
}
if(z >= 2){
cout << z << " times " << arr[i] << endl;
z = 1;
}
}
return 0;
}
【问题讨论】:
-
创建另一个数组并在满足该索引时增加索引
-
您必须检查该号码之前是否存在。
-
你能对数组进行排序或创建额外的结构(如
std::map)吗? -
std::map是你的朋友。
标签: c++ arrays loops duplicates