假設:字串 l長度為n中定義的遞增子串行是這樣乙個子串行lin=k1
,ak2
,…,a
km>,其中k12
<…m
且ak1
k2<…km
。求最大的m值。 0
f(i) 表示 以i結束的最大子串行 長度,c(i)表示第i個字元, j
**如下:
/*** created by wuss on 2017/8/29.
* f(i) 表示 以i結束的最大子串行,c(i)表示第i個字元
*/public class ls
private static int
maxls(string str)
for(int i=0
;i;i++)
}lenarr[i] = maxi;
if(max < maxi)
}return max;
} // 輸出最長的遞增序列
private static void
maxlsinfo(string str)
strarr[0]=str.charat(0)+""
;for(int i=0
;i;i++)
}strarr[i]= (temstr.length() == 0 ? string.valueof(str.charat(i)) : temstr);
lenarr[i] = maxi;
if(max < maxi)
}for(string s : strarr)
}system.out
.println();
}}
動態規劃 最長遞增子串行
給出序列 1 2 3 4 2 5 3 4 a 1 1,a 2 2,a 7 3,a 8 4 求其最長的遞增子串行,以上最長遞增子串行為 1 2 3 4 5 問題細分 初始化條件f 1 1,序列只有1個長度即為1 f 2 a 2 與下標小於2的比較,即a 1 比較,a 2 a 1 因此更新f 2 f 1...
動態規劃 最長遞增子串行
給定乙個無序的整數陣列,找到其中最長上公升子串行的長度 例項 輸入 10,9,2,5,3,7,101,18 輸出 4 解釋 最長的上公升子串行為 2,3,7,101 長度為4說明 可能會有多種最長上公升子串行的和,只需要輸出對應長度即可 演算法的時間複雜度應為o n2 首先,dp陣列的定義如下 dp...
動態規劃 最長遞增子串行
最長遞增子串行是動態規劃中最經典的問題之一,該問題描述的是在乙個已知序列中,取出若干元素 不必連續 組成乙個新的序列,子串行的各個數先後順序保持不變,且對子序列中的任意下標x令dp i 表示以a i 作為末尾的最長遞增子串行的長度。於是,通過設定這麼乙個陣列,最長遞增子串行的長度便是陣列dp中的最大...