Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

KristinaDimi avatar KristinaDimi 1 Точки

MostFrequentNumber

Здравейте,

имам нужда от помощ със задача Problem 4 – Most Frequent Number от C++ Fundamentals.

Дава ми само 60 точки

 

Това е моето решение:

https://pastebin.com/pWvfQuap

 

Условие на задачата:

Write a program that finds the most frequent number in a given sequence of numbers.

  • Numbers will be in the range [0…9].
  • In case of multiple numbers with the same maximal frequency, print all of them, ordered from smallest to largest, separated by spaces

Examples

Input

Output

Output

13

4 1 1 4 2 3 4 4 1 2 4 9 3

4

The number 4 is the most frequent (occurs 5 times)

8

2 2 2 2 1 2 2 2

2

The number 2 is the most frequent (occurs 7 times)

 

2 7 9

The numbers 2, 7 and 9 have the same maximal frequence (each occurs 3 times).

0
C++ Fundamentals 31/08/2020 21:06:16
LoshaPanda avatar LoshaPanda 10 Точки

Здравей Кристина,

Още в началото на кода ти вътре в mostFrequentNumber виждам, че присвояваш и веднага след това затриваш всичко, което си присвоила. Защо ?

vector <int> reppArr = arr; // Това ще каж,е че всички елементи от arr се присвояват към repArr

reppArr.erase(reppArr.begin(), reppArr.end()); // Тук триеш отначалото до края.

При това още на първия вход има грешка за ,, Expression: vector substrict out of range ".
Защо ?

- Представи си, че имам вектор от 1 елемент. Сега твоя цикъл ще се извърти 1 път, обаче ще се опита да достъпи втория елемент в numPlusNext, понеже имаме i + 1, а такъв елемент няма. 

Също така защо трупаш всичко в reppArr ? Какво искаш да запазиш ?

 

Дори това да беше минали сега да си представим, че имаме следния случай :

[2, 5, 1, 2]

Твоята програма ще вземе 2, 5 и ще ги сравни.
Ще вземе 5, 1 и ще ги сравни.

Какво остава за двойката в началото и края ?

Трябва да минем през числата, като отпечатаме числото, което се среща най-често.

Това може да се реши лесно с hashTable - unordered_map ( не знам дали сте го учили още ) или с O(N^2) решение.

Ще те наклопня и в двете посоки.

О(N^2)

[2, 5, 1, 2]

Сравняваме всяко число с всяко в масива.

Взимаме '2' и го сравняваме с '2' '5', '1' и '2', като имаме променлива за текущата ни най-голяма бройка и числото за тази бройка.

После ще вземем '5' и ще го сравним с '2', '5', 1' и '2'.

С unordered_map имаме ключ и стойност.

Пъхаме всички числа, като ключове и всички поватряния, като стойности, като след това ще минем пак през него с цикъл и ще имаме променлива max_count, която става равна при всяка по-голяма стойност.

 

Надявам се да съм ти бил от полза.

1
KristinaDimi avatar KristinaDimi 1 Точки

Благодаря,реших задачата на чисто и се получи.

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.