Создание программы, которая помещает 10 целых чисел в массив и распознает повторяющиеся числа и выводит их с номерами позиций, где

0

Я должен использовать только внутренний алгоритм линейного поиска, который заключается в следующем:

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
    1. Это кажется не по теме на программистов SE. Я бы сказал, что это лучше подходит для переполнения стека (или, возможно, Code Review SE, но я не уверен). 2. Часть вашего вопроса перед вторым блоком кода вообще имеет отношение к вопросу? Я бы сказал нет. Ваш вопрос не в том, чтобы застрять в первом фрагменте кода, а в том, чтобы сделать количество итераций / повторений во второй переменной блока кода. Удалите все из вашего вопроса , который не имеет отношения к этой проблеме. 3. Пожалуйста, дайте вашему вопросу название, которое представляет вашу проблему, а не цель вашей программы.
Теги:
algorithm

1 ответ

0

C++ не является моим языком повседневного использования, но вот Идея, как я ее реализую.

Я бы использовал map<int, List<int>> которая хранит в качестве ключа значения, которые вы видели до сих пор, и как списки значений позиций, в которых вы их видели.

Вы можете просто перебирать в O (n) свой вход и заполнять карту. На лету или в конце в качестве отдельного шага вы можете прочитать карту и вывести числа и позиции всех номеров, которые имеют список размером> = 2 на карте.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню