现在的位置: 首页 > 综合 > 正文

poj 1887 Testing the CATCHER

2014年02月18日 ⁄ 综合 ⁄ 共 667字 ⁄ 字号 评论关闭

题目链接:http://poj.org/problem?id=1887

题目大意:求给定数列到最长不升子序列。关键注意到结果输出完毕后至少要输出1行空行。

代码如下:

#include <cstdio>
#include <cstring>

using namespace std;

const int maxn=40000;

int data[maxn];
int dp[maxn];

int max(int a,int b){
	return a>b?a:b;
}

int main(){
 	int cas;
 	int limit;
 	for(cas=1;;++cas){
 	 	int temp=0;
 	 	scanf("%d",&temp);
 	 	if(temp==-1)break;
 	 	data[0]=temp;
 	 	limit=0;
 		for(int i=1;;++i){
 		 	scanf("%d",&temp);
 		 	if(temp==-1)break;
 		 	data[i]=temp;
 		 	limit=i;
 		}
 		dp[0]=1;
 		for(int i=1;i<=limit;++i){
 			dp[i]=1;
 			for(int j=0;j<i;++j){
 				if(data[j]>=data[i] && dp[j]+1>dp[i]){
 					dp[i]=dp[j]+1;
 				}
 			}
 		}
 		int ans=-1;
 		for(int i=0;i<=limit;++i){
 			ans=max(dp[i],ans);
 		}
 		printf("Test #%d:\n",cas);
 		printf("  maximum possible interceptions: %d\n\n",ans);//这里注意多输出一个或多个空行。
 	}	
	return 0;
}

抱歉!评论已关闭.