最长上升子序列[LIS]

算法原理很简单,不再赘述,这里贴一个函数模板,传入的参数为序列首尾元素的指针。

template<typename T> int LIS_nlogn(T * s, T * e)
{
if(s > e) return ;
T g[e - s + ];
int ret = ;
memset(g, , sizeof(g));
for(T * i = s; i <= e; i++)
{
if(g[ret] < (*i))
{
g[++ret] = (*i);
continue;
}
int l = , r = ret, mid;
while()
{
mid = (l + r) >> ;
if((*i) < g[mid]) r = mid;
else l = mid;
if(l == r || l + == r) break;
}
g[l] = (*i);
}
return ret;
}

  

上一篇:python面向对象一


下一篇:Python 常见时间处理