Двумерная матричная рекурсия с наибольшей возрастающей последовательностью

Мне было предложено новое домашнее задание, которое, мягко говоря, несколько разочаровало. По сути, я создаю 2D-массив целых чисел следующим образом:

97 47 56 36 60 31 57 54 12 55 
35 57 41 13 82 80 71 93 31 62 
89 36 98 75 91 46 95 53 37 99 
25 45 26 17 15 82 80 73 96 17 
75 22 63 96 96 36 64 31 99 86 
12 80 42 74 54 14 93 17 14 55 
14 15 20 71 34 50 22 60 32 41 
90 69 44 52 54 73 20 12 55 52 
39 33 25 31 76 45 44 84 90 52 
94 35 55 24 41 63 87 93 79 24

, и я должен написать рекурсивный метод или функцию по вашему желанию для вычисления самой длинной возрастающей подпоследовательности. В этом примере самая длинная возрастающая подпоследовательность следующая:

(5,0)   with value 12
(6,0)   with value 14
(6,1)   with value 15
(6,2)   with value 20
(7,2)   with value 44
(7,3)   with value 52
(7,4)   with value 54
(6,3)   with value 71
(5,3)   with value 74
(4,3)   with value 96

Итак, я не только должен проверять значения N, S, E, W на строго большие значения, но я также должен учитывать диагонали. Я провел обширное исследование того, как решить эту проблему рекурсивно, но мне не очень повезло, и рекурсия - моя самая слабая тема (да, я знаю, насколько мощной она может быть в определенных ситуациях). Я видел нечто подобное в публикации, где кто-то упоминал акриловый график, но это не то, что я ищу.

До сих пор я в основном дополнял свой 2D-массив нулями, чтобы мне не приходилось беспокоиться об ограничении , и я использую вложенные циклы for для обхода 2D-массива. В этих циклах я в основном проверяю, имеют ли N, NE, E, SE, S, SW, W, NW большее значение, чем текущий элемент. Извините, если я расстроил некоторых из вас, это моя первая попытка публикации. Если вам нужно, чтобы я опубликовал код, я сделаю это. Большое спасибо за ваше время!

17
задан Bill the Lizard 18 September 2012 в 14:10
поделиться