求一个数组的最长递减子序列

原创 2012年03月27日 19:42:45
47.创新工场(算法):
求一个数组的最长递减子序列 比如{9,4,3,2,5,4,3,2}的最长递减子序列为{9,5,4,3,2}

#include<iostream>
#include<cassert>
#include<stack>
using namespace std ;
int BiSearch(int *A,int nTarget,int nLen);
void FindLongestSequence(int *A,int nLen)
{
	int *index=new int[nLen];
	int *LDS=new int[nLen];
	index[0]=A[0];
	LDS[0]=1;
	int indexLen=1;
	for (int i=1;i<nLen;i++)
	{
		int pos=BiSearch(index,A[i],indexLen);
		index[pos]=A[i];
		LDS[i]=pos+1;
		if(pos>=indexLen)
			indexLen++;
	}
	int ResultLen=indexLen;
	for (i=nLen;i>=0;i--)
	{
		if(LDS[i]==ResultLen)
		{	
			index[ResultLen-1]=A[i];
			ResultLen--;
		}		
	}

	for (i=0;i<indexLen;i++)
	{
		cout<<index[i]<<" ";
	}
	delete []index;

}
int BiSearch(int *A,int nTarget,int nLen)
{
	assert(A!=NULL&&nLen>0);
	int start=0;
	int end=nLen-1;
	while (start<=end)
	{
		int mid=(start+end)/2;
		if(nTarget>A[mid])
			end=mid-1;
		else if(nTarget<A[mid])
			start=mid+1;
		else
			return mid;
	}
	return start;
}
int main()
{
	int A[]={9,4,3,2,5,4,3,2,77,76};
	int nLen=sizeof(A)/sizeof(int);
	FindLongestSequence(A,nLen);
	return 1;
}




参考:http://apps.hi.baidu.com/share/detail/31988401

相关文章推荐

求一个整数数组最长递减子序列

在网络上看了一些关于求一个整数数组最长递减子序列的博客,有一篇博客是一位网友“云淡风轻”写的,求的是递增子序列,我仔细研究了一下,发现有些问题,比如下标问题、最后输出的倒序问题等。我自己整理一下,放在...

47.创新工场: 求一个数组的最长递减子序列

/* 47.创新工场: 求一个数组的最长递减子序列 比如{9,4,3,2,5,4,3,2}的最长递减子序列为{9,5,4,3,2} 一看就是DP题目 设源数组为A,我们定义一个长度与A相同的辅助数...

算法 - 求一个数组的最长递减子序列(C++)

//**************************************************************************************************...
  • chimomo
  • chimomo
  • 2014年04月18日 11:29
  • 10109

动态规划——数组中最长递减子序列

原文链接:http://blog.csdn.net/wumuzi520/article/details/7378306 求一个数组的最长递减子序列比如{9,4,3,2,5,4,3,2}的最长递减...

动态规划——数组中最长递减子序列

求一个数组的最长递减子序列比如{9,4,3,2,5,4,3,2}的最长递减子序列为{9,5,4,3,2} 分析:典型的动态规划题目,对每一个数计算由它开始的最大递减子序列的个数,并存放到一张映射...

解题笔记(34)——求最长单调递减子序列

问题描述:求一个数组的最长递减子序列 比如{9,4,3,2,5,4,3,2}的最长递减子序列为{9,5,4,3,2}。       思路:这是很经典的一个问题,用动态规划解决。假设源数组为A...

应用递推的方法求最长非递减子序列的长度

最长合法序列 Time Limit:1000MS  Memory Limit:65536K Total Submit:55 Accepted:4 Description 有k个整数A[1]...
  • cuteli
  • cuteli
  • 2011年12月10日 21:45
  • 212

POJ 1552 BUY LOW, BUY LOWER(最长单调递减子序列求方案数)

BUY LOW, BUY LOWER Time Limit: 1000MS   Memory Limit: 30000K       Descri...

求最长单调递减子序列

原文地址:http://eriol.iteye.com/blog/858671 求最长单调递减子序列 博客分类:  DS & Algorithm CC++C#算法 ...
  • juiceda
  • juiceda
  • 2012年03月23日 20:42
  • 362

微软算法经典3 求最长递减子序列

求一个数组的最长递减子序列比如{9,4,3,2,5,4,3,2}的最长递减子序列为{9,5,4,3,2} 分析:典型的动态规划题目,对每一个数计算由它开始的最大递减子序列的个数,并存放到一张映射...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:求一个数组的最长递减子序列
举报原因:
原因补充:

(最多只允许输入30个字)