Софтуерно Инженерство
Loading...
+ Нов въпрос
gadjov avatar gadjov 115 Точки

Homework: Max Sequence of Equal Elements

Здравейте, от презентацията листове и матрици цял ден се мъча и немога да разбера как да започна задачата. Някой може ли да ми помогне с насоки или да помогне да довърша моята идея (ако е възможно така де). Ето го кода http://pastebin.com/RQ082Api

Само когато еднаквите числа  са с еднакъв брой ми гърми и не мога да го измисля cheeky

petar.dimitrov.86 avatar petar.dimitrov.86 450 Точки

Проблемът ти май идва от 20ти ред, където казваш, че equal = nums[counts.Max()];, т.е. ти казваш че числото е с индекс най-голямата стойност на counts в списъка nums. И така ако имаш примерно поредицата 2 2 1 1 3 3, counts.Max() ще ти е равно на 2, и съответно ще ти върне като резултат числото на индекс 2 в nums, т.е. 1, и накрая ще ти върне като резултат 1 1. Харесва ми, че си се опитал по елегантен начин да го решиш, обаче лично аз не се сещам как да се вземе по кратък начин индекса на стойността, която се среща най-много пъти. Може би във foreach цикъла да се прави там директно проверка за най-голямата дължина и да намираш вече правилната стойност за equal, която да се сменя всеки път като се намери по-голяма последователност.

Прилагам и моето решение, с което упражнявам ползването на Clear, AddRange и Add. Далече е от твоята логика, тъй като аз малко по-хамалски го правя, така че все пак ти препоръчвам да пробваш по твоя начин да избуташ до край, и чак тогава да погледнеш по-различен подход - http://pastebin.com/RJcq9JDB

1
borislav9212 avatar borislav9212 745 Точки

Мисля, ше ти трябват counteri, за да минаваш през числата и като има еднакви да ги записваш. Ето и моето решение може да ти помогне  http://pastebin.com/Qi8ARKer

Успех

0
11/04/2016 09:29:07
gadjov avatar gadjov 115 Точки

Благодаря, колеги за съветите, ето го моето решение http://pastebin.com/iANzhprG 100/100 . Най-накрая я измислих , но по този начин при отрицателни числа , ако абсолютната стойност на отрицателното число е по - голяма от положителното гърми, защото неможе да се поберат числата в по-малкия масив, но джъджа не го лови това laugh

1
11/04/2016 23:21:29
mrindzhov avatar mrindzhov 3 Точки

Колега този код, ми се струва,че работи за всички еднакви подадени числа без значение дали са съседни или не :D Може би има бъг в джъджа щом дава 100.Аз лично пробвах с Linq да я реша, но ми дава само 85... 

Ето и моя код: http://pastebin.com/ftMXqpLV

0
Stanislav.Petrov avatar Stanislav.Petrov 12 Точки

Здравейте,

Условието , което прочетох бе да се използва List.

И затова в следното решение съм го ползвал за да запиша колко пъти числото на дадената позиция се повтара наляво вкл. с нея.

Това е решението: https://pastebin.com/iiKyZKEF

0
18/05/2017 11:27:46
Miroslav_Kisov avatar Miroslav_Kisov 61 Точки

https://pastebin.com/aZShTYQQ И от мен.

0
delian1914 avatar delian1914 87 Точки

Един по - различен подход. Вход 7 7 4 4 5 5 3 3. Групираме елементите в листа, където nums е листа

var mostFrequent=nums.GroupBy(x=>x);

връща IGrouping<int,int>

С foreach обикаляме сортираните елементи като ги подреждаме по стойност или колко пъти  се среща числото Х 

 foreach (var num in mostFrequent.OrderByDescending(x=>x.Count()))
            {
                var element=num.Key;
                var ocurr=num.Count();
                Console.WriteLine(string.Concat(Enumerable.Repeat(element+" ",ocurr)));

                break;
            }

След първата интерация принтирам най - голямато или най - лявото от поредицата. Малко тъпо, но пък ефективно спирам цикъла с break;....

Изход 7 7

Решение

Източник: StackOverflow

 

Поздрави!

0
TeodorStefanovPld avatar TeodorStefanovPld 949 Точки

това е programing fundamentals...това което ти си направил е rocket science за тях все още и едва ли ще го разберат.

-1
09/02/2018 12:10:05
minchev_su avatar minchev_su 2 Точки

Ето и едно леко по-различно решение от мен :)

https://pastebin.com/ewvVJQyz

0