Loading...
alper_k avatar alper_k 3 Точки

Проблем със задача Anonymous Cache от Dictionaries and LINQ - Exercises

Здравейте!

Сблъсках се с един проблем при решаването на съответната задача.

Проблемът е следният:

Имам  Dictionary<string, Dictionary<string, int>> sets = new Dictionary<string, Dictionary<string, int>>();

Не мога да разбера как да принтирам даден key от външното Dictionary, което трябва да сортирам по value-тата на съответстващото му value от вътрешното Dictionary.

Моля за помощ.

Линк към моя код: https://pastebin.com/hT308AC0

Линк към задачата в judge : https://judge.softuni.bg/Contests/Practice/Index/864#0

Благодаря ви!

0
Programming Fundamentals
KrIsKa7a avatar KrIsKa7a 29 Точки

Идеята е първо да сортираш външното Dictionary по сумата на стойностите във вътрешното и после да принтираш ключовете на вътрешното Dictionary, което си открил по ключ във външното Dictionary.Имаш два варианта тук.

  • Първия и по кратък с LINQ да направиш сортировката, която да изглежда нещо като това: OrderByDescending(dt => dt.Value.Sum(s => s.Value). Помисли обаче къде и как да направиш съответната сортировка. Помисли и върху това, че трябва да вземеш само Dataset-а с най-голямата сума! Помисли какъв LINQ оператор можеш да използваш за това. Не искам да ти давам готовия код, защото смисъла от решаването на тази задача се губи. Правиш сортировката и след това принтираш ключовете на вътрешния речник. Помисли как може да бъде осъществено това.
  • Втория ти вариант, който не ти го много препоръчвам, защото кода става доста мазало е да ползваш помощно трето Dictionary<string, long>, където да пазиш всеки DataSet с общата му dataSize. Сортировката на такъв речник не би трябвало да ти представи проблем. Отново помисли как да вземеш само DataSet-а с най-голяма стойност на паметта. След като имаш името на DataSet-a и съответващата му памет в това Dictionary помисли откъде можеш да вземеш данните за неговите DataKeys. Надявам се с принтирането няма да имаш проблеми.

Помисли как може да се реши задачката по един от начините, по които ти предложих, а защо не и по двата?! И ако пак не става вече ще ти пусна един код да разгледаш каква ми е идеята.

1
25/01/2018 14:59:11
alper_k avatar alper_k 3 Точки

Благодаря ти!

OrderByDescending(dt => dt.Value.Sum(s => s.Value).  беше ключовото, което така и не можах да измисля сам!

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