POJ--1887:Testing the CATCHER (DP求最长非递增子序列)
2014-08-28 20:12
375 查看
1. 题目源地址:http://poj.org/problem?id=1887
2. 易错点:题目倒不是很难,利用DP求最长非递增子序列,其实和DP求最长递增子序列是差不多的。
易错点在于数组要开的足够大,之前开200,2000都不行,后来开到5000才AC了。
关于DP求最长递增子序列之前写过一篇博客的,这里附上链接:/article/10670931.html
3. 解题代码:
2. 易错点:题目倒不是很难,利用DP求最长非递增子序列,其实和DP求最长递增子序列是差不多的。
易错点在于数组要开的足够大,之前开200,2000都不行,后来开到5000才AC了。
关于DP求最长递增子序列之前写过一篇博客的,这里附上链接:/article/10670931.html
3. 解题代码:
//POJ--1887:Testing the CATCHER DP求最长非递增子序列 #include<iostream> using namespace std; int main() { int num[5000],dp[5000]; int n,i,j; int caseNum=0; while(cin>>num[0] && num[0]!=-1) { caseNum++; for(n=1; ;n++) { cin>>num ; if(num ==-1) break; } for(i=0;i<n;i++) dp[i]=1; for(i=1;i<n;i++) { for(j=0;j<i;j++) { if(num[j]>=num[i] && dp[j]+1>dp[i])//注意和DP求最长递增子序列的区别 dp[i]=dp[j]+1; } } int max=0; for(i=0;i<n;i++) { if(dp[i]>max) max=dp[i]; } cout<<"Test #"<<caseNum<<":"<<endl; cout<<" maximum possible interceptions: "<<max<<endl; cout<<endl; } return 0; }
相关文章推荐
- poj 2127 dp(最长公共递增子序列)
- POJ 1836 DP(最长递增子序列)
- poj 1887 Testing the CATCHER(最长递增子序列)
- POJ-1887 Testing the CATCHER(dp,最长下降子序列)
- POJ-1887 Testing the CATCHER(dp,最长下降子序列)
- [dp]最长递增子序列poj 1631Bridging signals
- POJ 1887-Testing the CATCHER(dp_最长下降子序列)
- poj 1631 Bridging signals (二分||DP||最长递增子序列)
- POJ 2533 - Longest Ordered Subsequence(dp 最长递增子序列)
- poj 1887 Testing the CATCHER_最长上升子序列
- POJ 1836 - Alignment(最长递增子序列)
- poj之最长递增子序列
- POJ 1887 —— Testing the CATCHER 最长下降子序列
- POJ 1631 Bridging signals DP(最长上升子序列)
- poj 1887 Testing the CATCHER_最长上升子序列
- POJ 2533-Longest Ordered Subsequence(dp_最长上升子序列)
- poj2533--Longest Ordered Subsequence(dp:最长上升子序列)
- leetcode 300. Longest Increasing Subsequence 最长递增子序列LISS + 十分经典的动态规划DP做法
- poj2533——Longest Ordered Subsequence(最长递增子序列模板)
- poj 2533 Longest Ordered Subsequence (最长递增子序列)