Задача: Даны 2 массива a и б. Определить какой эл-т массива б чаще вст

Тема в разделе "C/C++/C#", создана пользователем Christushka, 29 ноя 2010.

  1. Christushka

    Christushka Гость

    Даны массивы А и В, с размерностью N. Определить, какой элемент массива В чаще всего встречается в А.
     
  2. Dash

    Dash Гость

    Вариантов много. Один из них:

    Создаёшь две вспомогательные переменные:
    1. индекс текущего максимально повторяющегося элемента массива B;
    2. количество повторов этого элемента (инициализированное значением 0).

    Запускаешь цикл по перебору элементов массива B. Внутри этого цикла запускаешь вложенный цикл по перебору элементов массива A, в котором подсчитываешь количество вхождений элемента B в массив A. По окончанию вложенного цикла сравниваешь полученное количество со значением вспомогательной переменной №2. Если оно больше, то заменяешь значения вспомогательных переменных на текущие.
    По окончанию перебора элементов массива B получишь реальные индекс наиболее часто повторяющегося элемента и количество его повторов.
     
  3. BashOrgRu

    BashOrgRu Well-Known Member

    Регистрация:
    15 мар 2009
    Сообщения:
    78
    Симпатии:
    0
    Либо завести массив C размерностью N и значением C будет кол-во раз B находится в A. Затем просто пробежать по этому массивы и найти максимальные элемент с индеком j и вывести B[j].
     
  4. BashOrgRu

    BashOrgRu Well-Known Member

    Регистрация:
    15 мар 2009
    Сообщения:
    78
    Симпатии:
    0
    Код (C++):
    #include <stdio.h>
    #include <stdlib.h>

    int main()
    {
    const N=4;
    int a[N],b[N],c[N];
    int i,j,OfftenlyIndex=0,OfftenlyEl;
    /*Читам массив*/
    printf("A:\n");
    for (i=0;i<N;i++) scanf("%d",&a[i]);
    printf("B:\n");
    for (i=0;i<N;i++) scanf("%d",&b[i]);

    for (i=0;i<N;i++) c[i]=0; //Обнуляем массив c
    for (i=0;i<N;i++)
    for (j=0;j<N;j++) if (a[i]==b[j]) c[j]++;//Пробегаем по массиву a и считаем кол-во совпадений a[i] с b[j]
    OfftenlyEl=c[0];
    for (i=0;i<N;i++) if (OfftenlyEl<c[i]){ //Ищем максимальный из c
    OfftenlyIndex=i;
    OfftenlyEl=c[i];
    }
    printf("Чаще всего встречается элемент b[%d]=%d",(OfftenlyIndex+1),b[OfftenlyIndex]);
    return 0;
    }
     
  5. DarkKnight

    DarkKnight Well-Known Member
    C\C++ Team

    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    2Christushka : Уважаемый автор данная тема более на актуальна? Вы получили ответы на все вопросы?
     
  6. Rififi

    Rififi Гость

    Код (C++):
    #include <map>
    #include <iostream>

    #include <boost/spirit/home/phoenix.hpp>
    namespace phx = boost::phoenix;

    #include <boost/range/algorithm.hpp>
    #include <boost/range/adaptors.hpp>

    using namespace boost::adaptors;
    using phx::arg_names::arg1;

    /*
    Даны массивы А и В, с размерностью N. Определить, какой элемент массива В чаще всего встречается в А.
    */


    template <typename T, size_t N>
    T find_most_frequent(const T (&A)[N], const T (&B)[N])
    {
    T tmp[N];
    boost::copy(B, tmp);
    boost::sort(tmp);  
    T* end = std::unique(tmp, tmp+N);

    std::map<T, size_t> m;
    std::for_each(tmp, end, phx::ref(m)[arg1] = phx::count(phx::cref(A), arg1));

    return boost::max_element(m | map_values).base()->first;
    }

    int main()
    {
    const int A[10] = {1,2,2,3,3,4,4,7,2,9};
    const int B[10] = {0,1,5,6,7,1,2,-1,2};

    const int most = find_most_frequent(A, B);
    // наиболее частый элемент == 2, встречается 3 раза

    std::cout << most << std::endl;

    return 0;
    }
     
  7. DarkKnight

    DarkKnight Well-Known Member
    C\C++ Team

    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    Rififi, Хочу сказать что ваши познания в STL и Boost поражают..... (я говорю про все ваших 4 сообщения)...
    Но зачем использовать их в столь тривиальных задачах, которые в первую очередь основанны на стандартах C...
    Или вы просто ищите практическое применения, столь мощному механизму как STL (ну и Boost - как его дополнение)...

    P.S. Ручаюсь... 95% процентов этого подфорума, даже близко не представляют работу вашего кода...
     
Загрузка...
Похожие Темы - Задача Даны массива
  1. Янчик
    Ответов:
    0
    Просмотров:
    478
  2. TrishaRay
    Ответов:
    1
    Просмотров:
    778
  3. elzim
    Ответов:
    0
    Просмотров:
    929
  4. ShaoKahn
    Ответов:
    0
    Просмотров:
    1.117
  5. eremin-sanek
    Ответов:
    3
    Просмотров:
    1.104

Поделиться этой страницей