找出增长最长的子序列的长度

时间:2014-11-05 16:00:04

标签: 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的所有整数,没有重复的数字。

2 个答案:

答案 0 :(得分:1)

  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. 传递到数组的末尾
  6. 代码出现,希望清除temp_seq[],然后将所有seq[]设为temp_seq[]

答案 1 :(得分:0)

tmp_seq在函数定义中声明为指向类型int的指针。因此,您的函数总是返回int *的大小(在这种情况下恰好是4个字节)。