拦截导弹(最长递增子序列)
生活随笔
收集整理的這篇文章主要介紹了
拦截导弹(最长递增子序列)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目描述:某國為了防御敵國的導彈襲擊,開發出一種導彈攔截系統。但是這種導彈攔截系統有一個缺陷:雖然它的第一發炮彈能夠到達任意的高度,但是以后每一發炮彈都不能高于前一發的高度。某天,雷達捕捉到敵國的導彈來襲,并觀測到導彈依次飛來的高度,請計算這套系統最多能攔截多少導彈。攔截來襲導彈時,必須按來襲導彈襲擊的時間順序,不允許先攔截后面的導彈,再攔截前面的導彈。?輸入:每組輸入有兩行,第一行,輸入雷達捕捉到的敵國導彈的數量k(k<=25),第二行,輸入k個正整數,表示k枚導彈的高度,按來襲導彈的襲擊時間順序給出,以空格分隔。輸出:每組輸出只有一行,包含一個整數,表示最多能攔截多少枚導彈。樣例輸入:8300 207 155 300 299 170 158 65樣例輸出:6考查最長遞增子序列,算是比較簡單的. 1 #include <cstdio>
2
3 int F[26];
4 int buf[26];
5 int main(){
6 int K, tmp;
7 int max;
8 while(~scanf("%d", &K)){
9 max = 1;
10 for(int i = 1; i <= K; i++){
11 scanf("%d", &tmp);
12 buf[i] = tmp;
13 F[i] = 1;
14 for(int j = 1; j < i; j++){
15 if(buf[i] <= buf[j] && F[i] < F[j] + 1)
16 F[i] = F[j] + 1;
17 }
18 if(max < F[i])
19 max = F[i];
20 }
21 printf("%d\n", max);
22 }
23 return 0;
24 }
?
轉載于:https://www.cnblogs.com/babyron/archive/2013/02/20/2919020.html
總結
以上是生活随笔為你收集整理的拦截导弹(最长递增子序列)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何控制C#Socket的连接超时时间
- 下一篇: 利用API实现窗体淡入淡出特效