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

Increasing elements - Coding 101 Jan 2016

Здравейте,

не мога да се справя с ето тази задача:

Дадена е редица от n числа: a1, a2, …, an. Да се пресметне дължината на най-дългата нарастваща поредица от последователни елементи в редицата от числа.

Вход

Входните данни се четат от конзолата. На първия ред стои цяло число n (0n1000). На следващите n реда стоят n цели числа в интервала [-10001000]: a1, a2, …, an.

Изход

На конзолата трябва да се отпечата едно число – дължината на най-дългата нарастваща редица.

 

Стоя си на 83% в Judge и не разбирам защо, аз каквито и примери да пробвам си работи...

Ето го кода: http://pastebin.com/9SQv8arq

BraveHamster avatar BraveHamster 37 Точки

Искаше ми се да не ти давам отговор, но честно казано ти прегледах кода поне 3 пъти и не мога да установя къде е проблемът.

Някак интуитивно ми идва, че този else if ти прецаква нещата, но не мога да обясня защо.

 

Този код работи и дава 100/100 : http://pastebin.com/WXeBRxyT

1
milenats avatar milenats 9 Точки

Благодаря, аз вече намерих в нета работещ код, но се закучих с моя, понеже всички примери с които пробвах си дават верен разултат.

Просто не разбирам как Judge открива неработещи добре примери.

1
BraveHamster avatar BraveHamster 37 Точки

Мда, дано някой разнищи мистерията.

И на мен ми стана интересно

0
KrasimirPetkov avatar KrasimirPetkov 331 Точки

С малка корекция се получава: http://pastebin.com/yPqxNEWt

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

 

Успех!

1
milenats avatar milenats 9 Точки

Благодаря ти, ще го разгледам много внимателно.

1
VanessaShopping avatar VanessaShopping 48 Точки

Много сложен ми изглежда кода.

Погледни моето решение. http://pastebin.com/3XkrtZ3H

Ако нещо не ти е ясно питай

0
milenats avatar milenats 9 Точки

Ако се не лъжа това е код на някаква друга задача.

0
Alex0101 avatar Alex0101 374 Точки

Здравей,

 

Ето твоя код със съвсем малка поправка - 100/100

http://pastebin.com/FJaqvsHt

Колегата от по-торе излезе прав. Проблемът идваше от esle if. 

Ако имаш поредицата 1 2 3 4 5 6 7 7 , като застанеш на втората седмица, реално вече си излезнал от поредицата. А новата поредица има дължина 1 , независимо, колко е дълга.

Също така , ако имаш редицата 1 1 1 1, на всяка единица , ще имаш longestnow =1.  А за да я сетнеш ти имаш условие за лонгест и лонгест ноу, което не е коректно.

Нахнаш  if на  esle  и добавих последната проверка във for , защото на всякак итерация трябва да проверяваш.

2
milenats avatar milenats 9 Точки

Разбрах, мерси!

0