任务是在给定的整数数组中查找最长子序列的长度,以便子序列的所有元素按升序排序。例如,{15,27,14,38,26,55,46,65,85}的LIS长度是6,最长的子序列是{15,27,38,55,65,85}。最长的子序列
以下是我写的代码。我不确定我的逻辑是否正常,但代码无法正常运行。如果我尝试输入下面的测试案例
程序停止14后阅读的价值和给我的输出2.它应该阅读9个值,但该代码只阅读3个值。我检查过我的代码几次,但不幸的是,我无法发现错误。
#include<stdio.h>
int main()
{
int N,max_val,i,j,k,l=1;
int a[100000], track[100000];
track[0]=0;
max_val=1;
scanf("%d",&N);
for(i=0;i<N;++i)
{
printf("x");
scanf(" %d",&a[i]);
if(i!=0)
{
for(j=0;j<l;++j)
{
if(a[i]>a[track[j]])
{
max_val++;
track[0]=i;
l=1;
break;
}
else
{
track[l]=i;
l++;
}
}
}
}
printf("%d",max_val);
return 0;
}
帮助表示赞赏。谢谢!
@ Rizier123你英语吗? – 2014-12-06 15:12:28
http://stackoverflow.com/q/20314420/971127 – BLUEPIXY 2014-12-06 15:25:23
@BLUEPIXY:我不是在寻找解决方案,我更感兴趣的是知道我的代码有什么问题。谢谢! – 2014-12-06 15:36:10