Loading...

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

KatyaMarincheva avatar KatyaMarincheva 572 Точки

[Homework] Advanced C# - Arrays, Lists, Stacks, Queues - Problem {7} *Sorted Subset Sums

Здравейте, колеги :)

С цел да наруша принципа си никога да не задавам въпроси, а и защото ми е любопитно: реших тази задача, но както обикновено ми се струва, че може да стане и несравнимо по-кратко - моля ако някой се сеща какво може да се посъкрати или направи по друг начин - да ми даде някаква идея.

Това е решението ми: https://github.com/KatyaMarincheva/SoftUni/blob/master/SoftUni-Homeworks/Advanced%20C%23/01.%20Arrays-Lists-Stacks-Queues-Homework/07.%20Sorted-Subset-Sums/SortedSubsetSums.cs

Благодаря предварително :)

Тагове:
9
C# Advanced 07/05/2015 23:18:45
Filkolev avatar Filkolev 4482 Точки
Best Answer

Здравей,

Първо поздравления за добре структурираното (отново) решение :) 

Някои неща мога да се съкратят, но стига резултатите да са коректни това не е от особено значение:

  • Принтирането може да стане със string.Join(), така няма да мислиш какви са размерите и къде какво да сложиш.
  • Смятането на сума в колекция може да стане с LINQ - .Sum().
  • Зачистването на повтарящи се сетове може да стане в началото като се елиминират повтарящите се елементи в подадения масив. Така се спестяват и малко ненужни итерации.

Задачата е със звезда, понеже изисква малко повече работа с функционално програмиране. Алтернативата е n на брой цикли и доста по-тежки сметки, иначе както виждаш не е кой знае колко сложна.

 

1
KatyaMarincheva avatar KatyaMarincheva 572 Точки

Здравей Fil,

Страшно благодаря за съветите - веднага ще опитам да си направя ново оптимизирано решение :)

Какво имаш предвид под "добре структурираното (отново) решение"?

0
Filkolev avatar Filkolev 4482 Точки

Имам предвид, че решенията ти винаги са разбити на методи и подредени. По този начин доста лесно става ориентирането в кода, както и промените (например да замениш някой твой метод с вграден такъв, като .Sum()). На мен ми трябваше доста време да се отърва от навика да пиша задачите като един чаршаф отначало до край :D Но се надявам след ООП и КПК курсовете мнозинството колеги да пишат по подобен начин.

1
KatyaMarincheva avatar KatyaMarincheva 572 Точки

Благодаря :)

Моят лош навик, от който още се опитвам да се отърва, е че в "една друга академия" ни забраняваха да използваме вградена функционалност, та оттам ми е останал този навик без да забележа дори за Sum() да използвам собствен метод..... Това беше и основната цел на въпроса ми - сигурна бях че пак съм включила излишен собствен метод.

0
04/05/2015 13:31:59
valcho62 avatar valcho62 178 Точки

Във връзка с тази вече стара задача, за мен възникна следния проблем .Някой може ли да ми каже каква е разликата между List.Clear() и List = new List<int>(). Аз като използвах Clear  освен съответния лист се изтриваха всички листове от колекцията от листове. С  new List<int>() всичко си стана.

http://pastebin.com/yNrt2keH    -ред 33 и ред 30

 

 

0
KatyaMarincheva avatar KatyaMarincheva 572 Точки

@valcho62,

мисля, че в MSDN има обяснение за това:

https://msdn.microsoft.com/en-us/library/dwb5h52a(v=vs.110).aspx​

"

Remarks

Count is set to 0, and references to other objects from elements of the collection are also released."

"references to other objects" в твоя случай са елементите на твоя List of Lists -  той също е cleared, в карйна сметка

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