c - 求最长递增子序列的长度

标签 c sequence

我用 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 的所有整数,没有重复的数字。

最佳答案

  1. 返回错误值。 return(sizeof temp_seq);是一个常数,指针的大小temp_seq@eurythmia

  2. ;之后for(i=0; i<seq_size; i++);当然不需要,因为它完成了循环。 for(i=1; i<seq_size; i++); 相同.

  3. seq[0] 的值从未测试或保存在temp_seq中.

  4. 可能的访问已通过数组末尾 seq[i]=temp_seq[j+1];

  5. 代码似乎想要清除 temp_seq[]然后设置全部seq[]temp_seq[] .

关于c - 求最长递增子序列的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26761577/

相关文章:

postgresql - 如何将外键设置为已排序的 id

kotlin - Kotlin可以链接来自不同InputStream的多个序列?

Cuda 重用事件来确定多个部分的执行时间

c 将 char* 拆分为 char**

java - Oracle 12c 中使用 rs.getInt() 或 getLong() 的 Sequence.NEXTVAL 失败 - 那么它返回什么数据类型?

python - 如何使用 BioPython 解析不明确的字符

java - 让 Jlabel 在单击后立即出现,然后在 Java 中运行代码后消失,如 Java 进度加载器、单击操作后的事件序列

python - 减少cython并行中的数组

C编程: Basic fscanf issues with doubles

c++ - 这个浮点平方根近似是如何工作的?