Софтуерно Инженерство
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