最长递增子串问题

eg:

一个字符串"1 4 2 3 5",求最长递增子串。

结果为"1 2 3 5"最大递增子串的长度为4

可以采用动态规划的方法来解决这个问题:

我们可以把原问题进行分解,分别求出第1个位置上的递增子串的长度,第2个位置上的xx长度.....第n个位置上的xx长度。。。

不妨设置一个数组longest[len]来存储1~n个位置上递增子串的长度,然后在数组中找出最大的那个数,就是最递增子串的长度

表达式为: longest[j] = max{longest[i] + 1,longest[j]} 

下面贴出实现的代码:

package ggg;

public class Test {

	public static int getCount(char[] a,int len){
		int[] longest=new int[len];
		for(int i=0;ia[i]&&longest[j]max){
				max=longest[j];
			}
		}
		return max;
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String s="1  4 2 3 5";
		String s1=s.replaceAll(" ", "");
		char[] c=s1.toCharArray();
		System.out.println(getCount(c,c.length));
			
	}

}

最长递增子串问题_第1张图片


你可能感兴趣的:(算法例题)