Task 4 Visitors от 09.01.2018 г.
Ето, моето решение за него judge ми дава 20/100 точки доста грешни тестове.https://pastebin.com/ZJ5qGhd5
Може ли някой (например: МартинБГ :) или Kolioi ,че само вие пишете във форума ), да ми обясни как да ползвам count от #include<algorithm>, за да заместя функцията, която аз съм написала. На мястото, на което искам да го ползвам има закоментиран count.
Може ли да ми кажете, къде греша.
вход:
entry 1A John 15
entry 1B Tony 16
entry 1A John 15
entry 1C John 86
name John
name Jebediah
entry 1A John 15
entry 1B Tony 16
entry 1A John 15
entry 1E Jebediah 87
entry 1D Mark 16
age 15 87
end
Да искам още да помисля!
Ето, аз добре си помислих, но сега вместо 20/100 имам 0/100 точки.Смених вектора с лист, а другите два временни вектора с опашка. Само,че като сравнявам за името и различните години нещо не правя, както трябва и вместо 2 отговора е 4. Сравнявам първия с последния и после трия първия в списъка. Може ли съвет? Ето го решението ми.
Да питам и struct има ли също конструктор и деструктор, аз и класа смених със struct?
Единствената разлика между class и struct в C++, е че класът по подразбиране е с private достъп, а struct - с public.
Следните два записа са еквивалентни по своето значчение:
printCountNameVisitors и printCountAgeVisitors в новото ти решение получават infoVisit (колекцията с посещенията) по референция и трият елементите от нея. Това не е правилно, защото при една и съща команда (напр. name John) изпълнена последователно два или повече пъти, ще получим различен резултат.
Няколко думи за избора на структури. По-важните неща, които се вземат предвид:
Не винаги може да се удовлетворят всички условия само с една колекция и често се налага да се търси баланс между използвана памет, бързодействие и - не на последно място - сложност на кода.
За постигане на оптимални резултати може да се наложи комбинирането на няколко структури, напр:
- list/vector - за запазване на последователността на въвеждане
- unordered_set/unordered_map - за уникални елементи и/или за бърза проверка дали даден елемент съществува
- set/map - за сортиране на уникални елементи по даден критерий, както и за бързо извличане на последователни елементи, които попадат в дадени граници
- multiset/multimap - като горните, но позволяват и повтарящи се елементи
- stack - ако искаме да достъпваме елементите в обратен ред (достъп до последния въведен елемент)
- queue - ако искаме да достъпваме елементите според реда на въвеждането им (достъп до най-старият елемент в колекцията)
- priority_queue - ако искаме достъп до елемента с най-висок приоритет по даден критерий
В контекста на задачата, имаме следните операции:
Какви структури, според теб, най-много биха подхождали за тези операции?
Търсене по критерий name - трябва да изведем броя уникални потребители с това име и различни години.
Според, което си обяснил (това ще си го запиша), трябва да се използва unordered_set , но това нямам представа как да го
напиша като код, особено в клас.
Търсенето по name не се интересува от годините, защото уникалността на потребителите се гарантира от id-то им.
Ще ти подскажа структурите, които аз съм използвал - виж дали ще се ориентираш коя за какво е, а малко по-късно ще ти постна и решението ми:
Сетих се set за id, unordered_map <string, int> за имената и броя им и съответно map<int, int> за годините и броя им.
Да, точно така!
Набързо това са проблемите, които забелязвам:
Искаш ли да опиташ да ги оправиш, или направо да ти покажа решението?
Щеше да е провал, ако не беше стигнала дотук. Сигурен съм, че сега знаеш много повече за структурите, отколкото преди да я почнеш. :)
Имай предвид, че тази е от задачите на Жорката, а нивото на курса, който той води е по-високо, от това, което ви преподават в текущата инстанция, т.е. нормално е тази задача да ти е по-трудна от тези, които са ви давали.
Това е моето решение на задачата, а това са две решения от автора на задачата: first and optimized
Авторът е решил да използва Visitor клас, докато моето решение се фокусира директно върху проблемите, които трябва да се решат - броене на потребителите по критерий и бързо извеждане на резултата.
Не си ми загубила времето - приятно ми е, когато мога да помогна на колега, но съм изненадан, че се колебаеш дали да продължиш. Както писах и по-горе, последните седмици решаваш задачи, които са над нивото на курса, който караш. Нормално е да са ти по-трудни, но пък задачите, които ви дават за домашно и най-вероятно ще имате на изпита ще ти бъдат по-леки.
unordered_set/unordered_map , но може и без клас.
Ето това.
успях да направя, продполагам че map<size_t,size_t> го ползваш , counter
Mоята задача пак не е вярна. Уви.
Не ми пращай още решението.
Предавам се
Вече, н
Благодаря и извинявай, че ти изгубих толкова време!
Разгледах, решенията и твоето ми се струва най - разбираемо, поне за мен. Ти още при въвеждането проверяваш за id, веднага преброяваш посетителите с уникално i