动态规划练习一—1最长上升子序列
2017-04-17 21:14
190 查看
1、题意:对于输入的数组,输出其上升子序列最长的长度
2、思路:对开始到结束,储存当前位置为子序列最后一位时最长的长度,当其位置最长长度为前一个比当前位置数值小的位置的长度+1;
3、感想:此题老师上课讲过,但是自己做的动态规划第一题,是思维打开的开端,比较易接受。
4、代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,i,j,max,line[1002],a[1002];
scanf("%d",&n);line[0]=0;
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
line[1]=1;
for(i=2;i<=n;i++)
{max=0;
for(j=1;j<i;j++)
{if(a[i]>a[j])
{if(max<line[j]) max=line[j];}}
line[i]=max+1;}
sort(line,line+n+1);
printf("%d\n",line[n]);
return 0;
}
2、思路:对开始到结束,储存当前位置为子序列最后一位时最长的长度,当其位置最长长度为前一个比当前位置数值小的位置的长度+1;
3、感想:此题老师上课讲过,但是自己做的动态规划第一题,是思维打开的开端,比较易接受。
4、代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,i,j,max,line[1002],a[1002];
scanf("%d",&n);line[0]=0;
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
line[1]=1;
for(i=2;i<=n;i++)
{max=0;
for(j=1;j<i;j++)
{if(a[i]>a[j])
{if(max<line[j]) max=line[j];}}
line[i]=max+1;}
sort(line,line+n+1);
printf("%d\n",line[n]);
return 0;
}
相关文章推荐
- 动态规划练习一 13:最大上升子序列和
- 动态规划练习一 01:最长上升子序列
- 动态规划练习——最大上升子序列和
- 动态规划练习一—13最大上升子序列
- 动态规划练习-1(最长上升子序列)
- 动态规划练习一 最长上升子序列
- 动态规划练习--13(最大上升子序列和)
- 牛客网NowCoder 2018年全国多校算法寒假训练营练习比赛(第二场)A.吐泡泡(stack) B.TaoTao要吃鸡(动态规划01背包) D.YB要打炉石(最长上升子序列) E.小G有一个大树(树的重心) G.送分了QAQ H.了断局(递推)
- 动态规划——求最长下降/上升子序列
- 动态规划-最长上升子序列
- 动态规划专题之最长上升子序列
- 蓝桥杯 拦截导弹 动态规划(最长下降子序列+最长上升子序列)
- 动态规划--最长上升子序列
- zoj2136 经典动态规划 求最长上升子序列
- 动态规划——求最长下降/上升子序列
- 【基础练习】【二分】codevs2188 最长上升子序列(限定元素)题解
- 【基础练习】【线性DP】codevs1576 最长严格上升子序列题解
- 动态规划-基础篇——最长上升子序列(nlogn)
- 动态规划 LIS最长上升子序列
- 【算法】动态规划 最长上升子序列