Професионална програма
Loading...
+ Нов въпрос
shady_obeyd avatar shady_obeyd 50 Точки

[Programming Fundamentals] Arrays - Exercises - 10.Pairs by Difference

Здравейте, 

Може ли малко помощ с тази задача. Решението ми гърми на 80 / 100 с грешка "недостатъчно време". Може ли идеи как да се оптимизира ?

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

Тагове:
0
Programming Fundamentals 10/10/2017 14:00:54
SlavyanaChonovska avatar SlavyanaChonovska 48 Точки

Според мен нямаш нужда от променливата int result, можеш просто да я запишеш в if-проверката и да си спестиш 1 ред. Също така можеш просто да вземеш абсолютната стойност с Math.Abs вместо да смяташ с Math.Min и Math.Max, мисля че е по-лесно за писане и по-трудно може да се допусне грешка. Също така вторият цикъл трябва да започва от i + 1.

Ето моето решение, доста е подобно на твоето, но с тези неща които споменах и дава 100/100

0
10/10/2017 14:09:09
shady_obeyd avatar shady_obeyd 50 Точки

Да, принципно няма нужда от променливата, но кода е по-четим так с нея. :)

0
k.sevov avatar k.sevov 1074 Точки

Можеш да въртиш втория цикъл от i+1, пак ще ти изкара всички двойки. Ето ти моето решение -> https://pastebin.com/NJZPiBkt

0
shady_obeyd avatar shady_obeyd 50 Точки

Благодаря, току що си видях двете грешки. :)

0
Sleya avatar Sleya 26 Точки

Тъкмо това щях да пиша ,да вържеш долния цикъл с горния +1.

0
Sleya avatar Sleya 26 Точки

https://pastebin.com/5wqZp4kP

Заповядай колега , проверката е малко по-различна , броиш 2 пъти.

0
Samuil_Dechev avatar Samuil_Dechev 35 Точки

Имах същия проблем и просто пробвах да не позлвам функцията Math.Abs. Вместо това вкарах втора проверка, като умножих специалното число (на което трябва да е равна разликта) с -1 : 

 if ((numbers[i] - numbers[j] == specialNumber)|| numbers[i] - numbers[j] == (specialNumber*(-1)))
                {
                    pairsNumber++;
                }

 

Това даде резултат и взех стоте точки. Явно Math.Abs метода, вкаран в цикъл с неизвестна дължина, товари излизшно програмата и ако става въпрос за проста проверка е добре да го избягваме (това е предположение, а не проверено знание).

0
nikolaybelobradov avatar nikolaybelobradov 4 Точки

Заповядай - https://pastebin.com/GsFhGjYx, в началото ми даваше 80/100, защото броях от j=0. В момента е от j = i + 1 и ми дава 100/100. :)

1
shady_obeyd avatar shady_obeyd 50 Точки

Благодаря колега, но отдавна съм решил задачата :D

0