程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> HDU 1257 最少攔截系統(dp)

HDU 1257 最少攔截系統(dp)

編輯:C++入門知識

HDU 1257 最少攔截系統(dp)


Problem Description 某國為了防御敵國的導彈襲擊,發展出一種導彈攔截系統.但是這種導彈攔截系統有一個缺陷:雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能超過前一發的高度.某天,雷達捕捉到敵國的導彈來襲.由於該系統還在試用階段,所以只有一套系統,因此有可能不能攔截所有的導彈.
怎麼辦呢?多搞幾套系統呗!你說說倒蠻容易,成本呢?成本是個大問題啊.所以俺就到這裡來求救了,請幫助計算一下最少需要多少套攔截系統.

Input 輸入若干組數據.每組數據包括:導彈總個數(正整數),導彈依此飛來的高度(雷達給出的高度數據是不大於30000的正整數,用空格分隔)

Output 對應每組數據輸出攔截所有導彈最少要配備多少套這種導彈攔截系統.

Sample Input
8 389 207 155 300 299 170 158 65

Sample Output
2

Source 浙江工業大學第四屆大學生程序設計競賽


#include
#include
#include
#include
#include
#include
using namespace std;

#define N 30005

int n,k,a[N];

inline int fdd(int x)
{
	for(int i=0;i<=k;i++)
	{
		if(i==k)
		{
			a[k++]=x;
			return 1;
		}

		if(a[i]>=x)
		{
			a[i]=x;
			return 0;
		}
	}
}

int main()
{
	int i;
	while(~scanf("%d",&n))
	{
		k=0;
		int ans=0,x;
		while(n--)
		{
			scanf("%d",&x);
			if(fdd(x))
			  ans++;
		}
		printf("%d\n",ans);
	}
 return 0;
}





  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved