Завдання полягає в тому, щоб написати найкоротшу реалізацію, щоб знайти Найдовшу зростаючу послідовність .
Приклад : Нехай S - послідовність 1 5 7 1 8 4 3 5 [довжина S = 8]
- У нас є 1 підпослідовність довжиною 0 [вважатимемо, що вона збільшується]
- 6 підрядів довжиною 1 {1,5,7,8,4,3} [усі вони вважаються зростаючими]
- (7 * 8) / 2 підрядки довжиною 2 [але ми видалимо дублікати], зростаючі підрядки знаходяться у сильному чорному кольорі.
{ 15,17 , 11, 18,14,13,57 , 51, 58 , 54,53,55,71, 78 , 74,73,75,84,83,85,43, 45,35 }
[зауважимо, що нас цікавлять лише суттєво зростаючі підрядки]
[ви не можете змінити порядок елементів всередині послідовності, тому в прикладі послідовності немає підрядів [37]
- У нас збільшуються під послідовності довжиною 4, яка дорівнює 1578, але немає підпослідовності довжиною 5, тому ми вважаємо довжину найдовшої зростаючої під послідовності = 4.
Вхід :
a 1 a 2 ... a N (Послідовність)
всі числа є натуральними цілими числами, меншими ніж 10 3
N <= 1000
Вихід :
Одне ціле число, що позначає довжину найдовшої зростаючої підпослідовності вхідної послідовності.
sample input(1)
1 2 4 2 5
sample output(1)
4
sample input(2)
1 5 7 1 8 4 3 5
sample output(2)
4
Ваш код повинен працювати своєчасно, будь ласка, протестуйте свій код у цьому випадку, перш ніж надсилати його сюди (також посилання містить моє рішення 290 байтів c ++ 11)
Ви можете взяти вхід з файлу / stdin або як функціональний параметр, і ви можете або надрукувати вихід у файл / stdout, або просто повернути значення, якщо ви пишете функцію
Табло оцінки
- Dennis CJam - 22
- isaacg Pyth - 26
- Говард GolfScript - 35
- гордий haskeller Haskell - 56
- Рей Пітон 3 - 66
- гістократ Рубі - 67
- DLeh C # - 92
- YosemiteMark Clojure - 94
- faubiguy Python 3 - 113
function f(){...}) або внутрішньої функції (просто ...)? Якщо порахувати зовнішні функції, чи дозволяються анонімні функції?