描述 description
求最長不下降子串行的長度
輸入格式 input format
第一行為n,表示n個數
第二行n個數
輸出格式 output format
最長不下降子串行的長度
樣例輸入 sample input
樣例輸出 sample output
時間限制 time limitation
各個測試點1s
注釋 hint
n小於5000
for each num <=maxint
經典dp,讓我想到了合唱隊形。
f[i]表示第i個人向左能得到的最大值,
列舉j from 1 to i-1
在a[i]>=a[j] 的條件下f[i]:=max[f[j]+1];
varn,i,j,k:longint;
a,f:array[1..5000] of longint;
begin
readln(n);
for i:=1 to n do read(a[i]);
for i:=1 to n do f[i]:=1;
f[1]:=1;
for i:=2 to n do
for j:=1 to i-1 do
if (a[i]>=a[j]) and (f[i]k then k:=f[i];
writeln(k);
end.
需要注意的是這句: for i:=1 to n do f[i]:=1; 賦初值的時候一定要賦成1,不能賦成0.。。不然要悲劇。。
TYVJ P1049 最長不下降子串行
最長不下降子串行 描述 description 求最長不下降子串行的長度 輸入格式 inputformat 第一行為n,表示n個數 第二行n個數 輸出格式 outputformat 最長不下降子串行的長度 樣例輸入 sampleinput 複製資料 3 1 2 3 樣例輸出 sampleoutput...
DP TYVJ P1049 最長不下降子串行
原題 型別 dp 原始碼 include includeusing namespace std int main for int i n 1 i 1 i if l 0 int max 0 for int i 1 i n i printf d max system pause return 0 最後狀...
最長不下降子串行
a1 t0 an a an 1 2 b an c d n 1 求該序列最長不下降子串行長度 n不是很大顯然可以暴力。n很大呢?那就不斷減迴圈節長度直至減到乙個閾值內,再暴力。正確性顯然,只要閾值不要設太小。include include include define fo i,a,b for i a...