【发布时间】:2014-11-05 16:00:04
【问题描述】:
我用 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 的所有整数,没有重复的数字。
【问题讨论】:
-
有些方面不清楚。发布示例输入和预期输出。
-
这种行:seq[i]=temp_seq[j];正在踩原始序列,可能不是您想要做的。唯一设置 temp_seq[] 的地方是它的初始设置为全 0
-
这一行:return(sizeof temp_seq);正在返回指针 temp_seq 的大小,对于您的 C 实现来说,它是 4
-
代码应该允许数字序列中的不连续性。 IE。当遇到