,當b1
< b2
< ... < bs
的時候,我們稱這個序列是上公升的。對於給定的乙個序列(a1
, a2
, ..., an
),我們可以得到一些上公升的子串行(ai1
, ai2
, ..., aik
),這裡1 <= i1
< i2
< ... < ik
<= n。比如,對於序列(1, 7, 3, 5, 9, 4, 8),有它的一些上公升子串行,如(1, 7), (3, 4, 8)等等。這些子串行中最長的長度是4,比如子串行(1, 3, 5, 8).
你的任務,就是對於給定的序列,求出最長上公升子串行的長度。
輸入輸入的第一行是序列的長度n (1 <= n <= 1000)。第二行給出序列中的n個整數,這些整數的取值範圍都在0到10000。
輸出最長上公升子串行的長度。
樣例輸入
7樣例輸出1 7 3 5 9 4 8
4
1.遞迴做法,不說了肯定超時。。
1 #include2 #include3using
namespace
std;
4int a[1010];5
intn;
6int f(int index)//
求以a[index]為終點的最長上公升子串行的長度712
int maxv = 1;13
for(int i = 1;ii)
1419}20
return
maxv;21}
22int
main()
2329
int maxv = 0;30
for(int i = 1;i<=n;++i)
3134 cout << maxv <35return0;
36 }
2.記憶遞迴型動規
1 #include2 #include3using
namespace
std;
4int a[1010];5
int dp[1010];6
intn;
7int cnt = 0;8
int f(int index)//
求以a[index]為終點的最長上公升子串行的長度
914 cnt++;
15int maxv = 1;16
for(int i = 1;ii)
1722
}23 dp[index] =maxv;
24return
dp[index];25}
26int
main()
2735 dp[1] = 1;36
int maxv = 0;37
for(int i = 1;i<=n;++i)
3841 cout << maxv <42 cout <<"
cnt:
"43return0;
44 }
3.「人人為我」遞推型動規,狀態是n個,算出每個狀態的時候需要乙個迴圈,因此總的時間複雜度是o(n^2)的。
#include#includeusing
namespace
std;
int a[1010
];int dp[1010];//
dp[i]表示以a[i]為終點的最長上公升子串行的長度
intn;
intmain()
for(int i = 2;i <=n;++i)
for(int j = 1;jj)
}cout
<< *max_element(dp+1,dp+n+1)
}
4.「人人為我」遞推型動規,時間複雜度也是o(n^2)的。
1 #include2 #include3using
namespace
std;
4int a[1010];5
int dp[1010];//
dp[i]表示以a[i]為終點的最長上公升子串行的長度
6intn;7
8int
main()916
for(int i = 1;i <=n;++i)
17for(int j = i+1;j<=n;++j)///
/看看能更新哪些狀態的值
1823
}24 cout << *max_element(dp+1,dp+n+1) <25return0;
26 }
最長上公升子串行(百練2757)
總時間限制 2000ms 記憶體限制 65536kb 描述 乙個數的序列 bi,當 b1 b2 bs的時候,我們稱這個序列是上公升的。對於給定的乙個序列 a1,a2 an 我們可以得到一些上公升的子串行 ai1,ai2 aik 這裡1 i1 i2 ik n。比如,對於序列 1,7,3,5,9,4,8...
百練 2757 最長上公升子串行
總時間限制 2000ms 記憶體限制 65536kb 描述乙個數的序列 bi,當 b1 b2 bs的時候,我們稱這個序列是上公升的。對於給定的乙個序列 a1,a2 an 我們可以得到一些上公升的子串行 ai1,ai2 aik 這裡1 i1 i2 ik n。比如,對於序列 1,7,3,5,9,4,8 ...
最長上公升子串行(百練2757)
總時間限制 2000ms 記憶體限制 65536kb 描述 乙個數的序列bi,當b1 b2 bs的時候,我們稱這個序列是上公升的。對於給定的乙個序列 a1,a2,an 我們可以得到一些上公升的子串行 ai1,ai2,aik 這裡1 i1 i2 ik n。比如,對於序列 1,7,3,5,9,4,8 有...