一个JAVA语言的考试题目

来源:百度知道 编辑:UC知道 时间:2024/06/05 21:11:50
题目:1 假设使用者随意输入 N 个整数,请从中找出一个长度最长的递增子串列。例如:当使用者依序输入 15,7,6,9,11,12,4 时,输出为 6,9,11,12。

2 在所有的递增子串列中选取其中和最大的子串列。
例如:当使用者依序输入 9,15,7,6,11,12,4 时,输出为 9,11,12。

public class LongestUpsequence
{

public int maxLength(int [] a)
{

int n = a.length;

int[] B = new int[n+1];

B[0]=-10000;

B[1]=a[0];

int Len = 1;

int p,r,m;

for(int i = 1;i<n;i++)

{

p=0;r=Len;

while(p<=r)

{

m = (p+r)/2;

if(B[m]<=a[i]) p = m+1;

else r = m-1;

}

B[p] = a[i];

if(p>Len) Len++;

}

return Len;

}

动态规划

这是属于算法的问题,是个经典的最长子序列问题,应该动态规划和贪心算法都可以作~

好深啊。不懂。。可以具体说说么??

我要下班了
我回去做出来给我加分