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

[Programming Basics] Java Simple Loops - Задача 10. Half Sum Element

Здравейте колеги!

Успях да реша задачата на 93% (според judge-a).

Гърми ми при вход: 28 1 14 4 32 5 1 4 35 32 42 53 23 2 32 43 32 23 1 23 3 32 323 24 2 43 4 32 5

Изход трябва да бъде: no diff 224

Моят изход: no diff 50176

Ето решението ми: https://pastebin.com/6iWuQ4Rg

Всички други сметки излизат, не мога да разбера защо само при тази се получава така. Ще бъда благодарен на всички отзовали се :)

Тагове:
0
Основи на програмирането 29/05/2017 16:01:41
DilyanaGeorgieva avatar DilyanaGeorgieva 81 Точки

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

https://pastebin.com/FDEc8Yqm

0
tdk928 avatar tdk928 109 Точки

Ето ти и моето решение https://pastebin.com/4URxq8rm
Твоето е найстина доста сложно измислено умножение , събиране и т.н и така е доста трудничко да се хване грешката.Съветвам те да използваш променливи ако имаш някакво действие и може да се запише в променлива за по-голяма четимост например 
(largest - min) може да отиде в променлива.

0
user101 avatar user101 4 Точки

Благодаря и на двама ви! Винаги е интересно да се видят алтернативни методи за решаване :)

 

В крайна сметка основната грешка се оказа липсата на Math.abs-а. Все още не ми е много ясно обаче, кога трябва да се използва и кога не.. 

0
user101 avatar user101 4 Точки

Мерси :)

0
Tomo_Radomirski avatar Tomo_Radomirski 4 Точки

Защо не си направиш променлива numDiff, която ти е разликата от allSum и 2*maxNum? Ще ти е по лесно при ваденето на крайния резултат и при формирането на if-условието.

Ако numDiff е равна на нула това значи, че имаш YES и за SUM си изпечати само максималната стойност.

Ако е ралична от нула, имаш NO и си печатиш за резултат Math.abs(numDiff).

Имам 100/100 на Judge.

0