我用 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[]
然后设置全部seq[]
与temp_seq[]
.
关于c - 求最长递增子序列的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26761577/