[Exercises] - Coding-101 - Simple Loops - Exercise 18 (Equal Pairs)
Здравейте, колеги!
Условието на задачата е: Дадени са 2*n числа. Първото и второто формират двойка, третото и четвъртото също и т.н. Всяка двойка има стойност – сумата от съставящите я числа. Напишете програма, която проверява дали всички двойки имат еднаква стойност или печата максималната разлика между две последователни двойки. Ако всички двойки имат еднаква стойност, отпечатайте "Yes, value=…" + стойността. В противен случай отпечатайте "No, maxdiff=…" + максималната разлика.
Имам проблем с Judge, дава ми 87 точки и в един от тестовете, очаква изход 88, а реалния изход трябва да е 145.
Сметнах го и ръчно, би трябвало макс. разлика да е 145, тъй като сумата на най-малката двойка е 0, а сумта на най-голямата е 145.
Ето и кода, който тествам (с печат на контролни суми): Code in Pastebin
Линка на задачата в Judge: Exercise 18 (Equal Pairs)
Проблема е само при този тест на Judg-а:
n=7
------
34
-33 sum=1
------
52
12 sum=64
------
-32
32 sum=0 (най-малката сума)
------
23
41 sum=64
------
7
25 sum=32
------
34
23 sum=57
------
124
21 sum=145 (най-голямата сума)
MaxDifferences=145-0=145 (а не 88 ???)
The user output text does not contain the expected output text. Expected output: no maxdiff 88 Your output: no maxdiff 145 ------- Какъв може да е проблема? Аз ли бъркам някъде или в Judge-а този пример е зададен некоректно?
Благодаря, колега!
Наистина относно разликата съм пропуснал да забележа в условието думата "последователни", което ообяснява проблема.
Аз съм решил по-сложният вариант , който обаче се оказва, че не е в условието.
Здравей колега! Забелязох, че това решение не е правилно дори и Judge да го приема, тъй като трябва да се посочи сумата от всички двойки дали е равна, а не само на последните две двойки. При такъв вход примерно:
4
1
1
2
1
3
3
3
3
Изкарва изход:
Yes, value=6.00
Имаш ли някакви други идеи как да я оправим?
Благодаря :)
Здравей отново! Видях къде е проблема. На последния If трябва да е:
Вместо
Моля някой да погледне какви съм ги вършил?
Не ми се получават нещата !
https://pastebin.com/eUQkUSh7
При първото завъртане на цикъла инициализирай сумите, след това при всяко следващо ги сравнявай. Нещо от рода на
на края на цикъла слагаш prevSum = currentSum; за финал. (Снипета е от моето решение, за това променливите са различни)
Здрасти!
Благодарности на IskrenPenev за решението! Много готина задачка, която определено ме затрудни с постоянната промяна на стойностите в променливите.
Ето и моето решение: https://pastebin.com/i3kZbpQY