动态规划-jobdu 1112-最长下降子序列
2017-05-22 09:59
253 查看
题目链接
某国为了防御敌国的导弹袭击,开发出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭,并观测到导弹依次飞来的高度,请计算这套系统最多能拦截多少导弹。拦截来袭导弹时,必须按来袭导弹袭击的时间顺序,不允许先拦截后面的导弹,再拦截前面的导弹。
输入:
每组输入有两行,
第一行,输入雷达捕捉到的敌国导弹的数量k(k<=25),
第二行,输入k个正整数,表示k枚导弹的高度,按来袭导弹的袭击时间顺序给出,以空格分隔。
输出:
每组输出只有一行,包含一个整数,表示最多能拦截多少枚导弹。
样例输入:
8
300 207 155 300 299 170 158 65
样例输出:
6
说明
样例输出中的6, 对应的就是
dp[i]=dp[j]+1s.t.argmaxjdp[j]且data[j]≥data[i],j∈[0,i)(1)
1. 题目
题目描述:某国为了防御敌国的导弹袭击,开发出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭,并观测到导弹依次飞来的高度,请计算这套系统最多能拦截多少导弹。拦截来袭导弹时,必须按来袭导弹袭击的时间顺序,不允许先拦截后面的导弹,再拦截前面的导弹。
输入:
每组输入有两行,
第一行,输入雷达捕捉到的敌国导弹的数量k(k<=25),
第二行,输入k个正整数,表示k枚导弹的高度,按来袭导弹的袭击时间顺序给出,以空格分隔。
输出:
每组输出只有一行,包含一个整数,表示最多能拦截多少枚导弹。
样例输入:
8
300 207 155 300 299 170 158 65
样例输出:
6
说明
样例输出中的6, 对应的就是
(300,300,299,170,158,65)这个最长下降(严格讲是不上升)子序列.
2. 思路
动态规划data[i]表示第i个导弹的高度.
dp[i]表示前i个数据构成的子串中, 最长下降子序列的长度. 那么状态转移方程就是
dp[i]=dp[j]+1s.t.argmaxjdp[j]且data[j]≥data[i],j∈[0,i)(1)
3. 代码
//jobdu 1112 ac #include <iostream> using namespace std; int data[100]; int dp[100]; int ans; int number; void f_init(){ dp[0]=1; ans=1; //如果测试数据只有一个数,坑啊!! } void f_read(){ int n=number,i=0; while(n--){ cin>>data[i++]; } } void f_calc(){ for(int i=1;i<number;i++){ int tmp=0; for(int j=i-1;j>=0;j--) if(data[j]>=data[i] && dp[j]>tmp) tmp=dp[j]; dp[i]=tmp+1; if(dp[i]>ans) ans=dp[i]; } } int main( ) { while(cin>>number){ f_init(); f_read(); f_calc(); cout<<ans<<endl; } return 0; }
相关文章推荐
- 动态规划求一个数列的最长不下降子序列java版
- 动态规划之——最长不下降子序列
- 动态规划之最长不下降子序列
- 动态规划例题:最长不下降子序列c序列
- Pku1887----Testing the CATCHER (经典动态规划题:最长下降子序列),,,,,捎带pku2533---Longest Ordered Subsequence
- codves动态规划 最长上升子序列
- 初识动态规划-最长不上升子序列
- 动态规划专练4 最长上升子序列
- 动态规划之----求最长递增子序列
- 动态规划之最长递增子序列
- POJ1631——Bridging signals(动态规划,最长上升子序列应用)
- YTU OJ 3135: 动态规划基础题目之最长上升子序列(Java解题)
- 动态规划之最长上升子序列(未完待续)
- 动态规划-最长上升子序列(LIS)
- 动态规划之最长递增子序列
- 九度OJ 1112:拦截导弹 (DP、最长下降子序列)
- 算法学习之动态规划--最长上升子序列
- caioj1064:动态规划入门(一维一边推2:最长上升子序列)
- HDU 1160(动态规划-最长上升子序列)
- 动态规划--最长递增(减)子队列.[九度1112][递推求解]