[英]Find the length of the longest increasing subsequence
我已经用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的所有整数,没有重复的数字。
返回错误的值。 return(sizeof temp_seq);
是一个常数,指针temp_seq
的大小。 @eurythmia
的;
在for(i=0; i<seq_size; i++);
当然不需要,因为这样可以完成循环。 对于for(i=1; i<seq_size; i++);
。
从未测试seq[0]
的值,也不将其保存在temp_seq
。
可能的访问通过数组seq[i]=temp_seq[j+1];
代码似乎想要清除temp_seq[]
,然后使用temp_seq[]
设置所有seq[]
temp_seq[]
。
tmp_seq
在函数定义中声明为指向int
类型的指针。 因此,您的函数总是返回int *
的大小(在这种情况下恰好是4个字节)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.