1. 程式人生 > >nyoj 814又見攔截導彈

nyoj 814又見攔截導彈

整數 ++ pre -1 ron i++ cnblogs 題意 blog

又見攔截導彈

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

難度:3

描述

大家對攔截導彈那個題目應該比較熟悉了,我再敘述一下題意:某國為了防禦敵國的導彈襲擊,新研制出來一種導彈攔截系統但是這種導彈攔截系統有一個缺陷它的第一發炮彈能夠到達任意的高度但是以後每一發炮彈都不能超過前一發的高度。突然有一雷達捕捉到敵國的導彈來襲。由於該系統存在缺陷,所以如果想把所有的導彈都攔截下來,就要多準備幾套這樣的導彈攔截系統。但是由於該系統成本太高,所以為了降低成本,請你計算一下最少需要多少套攔截系統。

輸入

有多組測試數據。
每組數據先輸入一個整數N(N≤3000),代表有N發導彈來襲。接下來有N個數,分別代表依次飛來的導彈的導彈的高度。當N=-1時表示輸入結束。

輸出

每組輸出數據占一行,表示最少需要多少套攔截系統。

樣例輸入

8

389 207 155 300 299 170 158 65

5

265 156 123 76 26

樣例輸出

2

1

#include<stdio.h>
int main()
{
    int i,j,n,dp[3050],m,x;
    while(scanf("%d",&n)!=EOF&&n!=-1)
    {
        dp[1]=0,m=0;
        for( i=0;i<n;i++)
        {
            scanf("%d",&x);
            for( j=1;j<=m;j++)
            {
                if(x<=dp[j])
                {
                    dp[j]=x;//記錄最小 
                    break;
                }    
            }
            if(j>m)
                dp[++m]=x;
        }
        printf("%d\n",m);
    }
    return 0;
}        

  

nyoj 814又見攔截導彈