构建一个程序,将10个整数放在一个数组中,并识别重复的数字并输出它们的位置编号

时间:2014-12-06 07:25:42

标签: c++ algorithm

我必须只使用内部线性搜索算法,即:

for (i = 0; i <= 8; i++)
    for (j = i + 1; j <= 9; j++)
    if (array [i] == array [j])

并且使用给定的算法,我有点卡在这里,我建立了这个:

#include <iostream>

int main(int argc, const char * argv[]) {
    // insert code here...
    int i , j;
    int array [10];
    std::cout << "Please Enter 10 integers: \n" << std::endl;
    for (i = 0; i <= 9; i++)
        std::cin >> array [i];
        for (i = 0; i <= 8; i++)
        for (j = i + 1; j <= 9; j++)
        if (array [i] == array [j])
            std::cout << array [i] << " is repeated in position numbers: " << i << " & " << j << "\n" << std::endl;
    return 0;
}

它适用于重复两次或一次的数字,我需要改进才能更好地重复工作,任何想法?

1 个答案:

答案 0 :(得分:0)

C ++不是我日常使用的语言,但这是我将如何实现它的想法。

我会使用map<int, List<int>>哪个存储到目前为止您看到的值的关键值以及您看到它们的位置的值列表。

您可以简单地在输入 O(n)中进行迭代并填充地图。 在飞行中或最后作为单独的步骤,您可以阅读地图并输出在地图中具有大小&gt; = 2的列表的所有数字的数字和位置。