Я написал код на C, который, учитывая последовательность, должен найти длину самой длинной увеличивающейся подпоследовательности. Однако он всегда возвращает длину 4, если это неверно.Найти длину самой длинной растущей подпоследовательности
Вот мой код до сих пор:
int LIS(int* seq, int* temp_seq, int seq_size)
{int i, j;
for(i=0; i<seq_size; i++);
{
temp_seq[i]=0;
}
for(i=1; i<seq_size; i++);
{
for(j=1; j<seq_size; j++)
{
if (seq[i]<temp_seq[j])
seq[i]=temp_seq[j];
else if (seq[i]>temp_seq[j])
seq[i]=temp_seq[j+1];
}
}
return(sizeof temp_seq);
}
Что я делаю неправильно?
Также следует отметить, что последовательность отображает все целые числа от 1 до n без повторных чисел.
Посмотрите здесь: http://stackoverflow.com/q/8658187/3933332 – Rizier123
Некоторые аспекты неясны. Ввод пробной информации и ожидаемый результат. – chux
такая линия: seq [i] = temp_seq [j]; наступает на исходную последовательность, возможно НЕ то, что вы хотели сделать. Единственное место, где temp_seq [] когда-либо задано, находится в начальной настройке его для всех 0 – user3629249