马上就要去参加蓝桥杯比赛了,这里想着把动态规划一些经典的问题总结一下,方便理解
一、下降/非降子序列问题
问题简单的说就是从一组数据中找出连续的一组子序列都是从小到大或者从大到小。
例如:2,10,3,5,7
Opt数组初始化opt[0]=1;
2,10.3.5.7 max
1 -----------1
1 2 -----------2
1 2 2 -----------2
1 2 2 3 -----------3
1 2 2 3 4 -----------4
每一位i和前面所有的j(j<i)相比,用opt数组来记录比较结果。最终要求的最长的个数要用max来比较记录。
代码如下:
#include<cstdio>
#include<cstring>
int main()
{
int n,a[1000],opt[1000]={1},max=0;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(int i=1;i<n;i++)
{
for(i