1. 程式人生 > >nyoj 79 攔截導彈

nyoj 79 攔截導彈

[0 捕捉 %d include style 階段 正整數 等於 nbsp

攔截導彈

時間限制:3000 ms | 內存限制:65535 KB

難度:3

描述

某國為了防禦敵國的導彈襲擊,發展中一種導彈攔截系統。但是這種導彈攔截系統有一個缺陷:雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能高於等於前一發的高度。某天,雷達捕捉到敵國導彈來襲。由於該系統還在試用階段,所以只用一套系統,因此有可能不能攔截所有的導彈。

輸入

第一行輸入測試數據組數N(1<=N<=10)
接下來一行輸入這組測試數據共有多少個導彈m(1<=m<=20)
接下來行輸入導彈依次飛來的高度,所有高度值均是大於0的正整數。

輸出

輸出最多能攔截的導彈數目

樣例輸入

2

8

389 207 155 300 299 170 158 65

3

88 34 65

樣例輸出

6

2

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int s[25];
int dp[25];
int main()
{
	int T;
	scanf("%d",&T);
	while(T--)
	{
		int n;
		memset(s,0,sizeof(s));
		memset(dp,0,sizeof(dp));
		scanf("%d",&n);
		for(int i=n;i>=1;i--)
			scanf("%d",&s[i]);
		int i,j,ans=0;
		dp[0]=1;
		for(i=1;i<=n;i++)
		{
			int Max=0;
			for(j=1;j<=i;j++)
			{
				if(s[i]>s[j]&&Max<dp[j])
					Max=dp[j];
			}
			dp[i]=Max+1;
			if(ans<dp[i])
				ans=dp[i]; 
		}
		printf("%d\n",ans);
	}
	return 0;
}         

  

nyoj 79 攔截導彈