вопрос уже спросил SO:Решите Longest программу подпоследовательности массива в C#
Longest increasing subsequence
, но решение в Python.
Вот мой C# версии
private static int longestSeq(int[] input1)
{
int counter = 0;
int i = 0;
int x = 0;
bool flag = true;
if (input1.Length == 0) return 0;
if (input1.Length == 1) return 1;
while (i != input1.Length-1)
{
if (flag)x= input1[i];
int y = input1[i + 1];
if (x < y) { counter++; flag = true; }
else { if (flag) { x = input1[i]; flag = !flag; } }
i++;
}
return counter+1;
}
Но это не работает для
int[] input1 = new int[] { 0,8,4,12,2,10,6,14,1,9,5,13,3,11,7,15 };
Ожидаемый выход 6, но я получаю 5.
2 вопросы
a) Чего я чего-то не хватает?
б) Как я могу оптимизировать свою программу
ли самый длинный список последовательности элементов, которые не меньше, чем последний элемент? – Hayden
Если это порт этой версии python - он очень плохо переносится. Этот алгоритм несколько отличается от решения в вашей ссылке. –
Вы сделали предположение, что первая последовательность 'x
Hayden