1. 程式人生 > >題目79:攔截導彈

題目79:攔截導彈

題目連結:

描述

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

輸入

第一行輸入測試資料組數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

演算法思想:

動態規劃,使用一個一維陣列來記錄當前元素所能攔截的最多導彈,演算法與單調遞增子序列一樣。
遞推公式:

dp[i]={1max(dp[i],dp[k]+1)i=0a[i]>a[k](0k<i)

原始碼

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int d[21];
int dp(int a[],int n)
{
    for (int i = 1; i < n; i++)
    {
        for
(int j = 0; j < i; j++) { if (a[i] < a[j]) { d[i] = max(d[i],d[j] + 1); } } } int max = 0; for (int i = 0; i < 21; i++) { if (max < d[i]) max = d[i]; } return max; } int main() { int
N, m, a[21]; cin >> N; while (N--) { //初始化d[]陣列全為1,因為至少有一組輸入,至少可以攔截一個導彈 for (int i = 0; i < 21; i++) { d[i] = 1; } cin >> m; for (int i = 0; i < m; i++) { cin >> a[i]; } cout << dp(a, m) << endl; } return 0; }

最優原始碼



#include<iostream>
#include<string>
using namespace std;
const int MAX=10010;
int f[MAX];
int data[MAX]={0};
int main()
{
    int n;
    cin>>n;
    while(n--)
    {
        int sz;
        cin>>sz;
        for(int i=0;i!=sz;++i)
            cin>>data[i];
            for(int i=0;i<=sz;i++)
            {
                f[i]=1;
                for(int j=0;j!=i;j++)
                {
                    if(i==sz || data[i]<data[j]) f[i]=max(f[i],f[j]+1);
                }
            }
            cout<<f[sz]-1<<endl;
    }
}                

演算法複雜度:

由原始碼可知,兩層迴圈,故演算法時間複雜度為O(n^2)。

相關推薦

題目79攔截導彈

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

NYOJ攔截導彈(動態規劃)

http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=79 描述 某國為了防禦敵國的導彈襲擊,發展中一種導彈攔截系統。但是這種導彈攔截系統有一個缺陷:雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能高於等於前一發的高度。某天

NYOJ 題目79 攔截導彈(動態規劃,最長遞增子序列)

攔截導彈 時間限制:3000 ms  |  記憶體限制:65535 KB 難度:3 描述 某國為了防禦敵國的導彈襲擊,發展中一種導彈攔截系統。但是這種導彈攔截系統有一個缺陷:雖然它的第一發

nyoj 79 攔截導彈

[0 捕捉 %d include style 階段 正整數 等於 nbsp 攔截導彈 時間限制:3000 ms | 內存限制:65535 KB 難度:3 描述 某國為了防禦敵國的導彈襲擊,發展中一種導彈攔截系統。但是這種導彈攔截系統有一個缺陷:雖然它的第一發炮彈能夠到達

BZOJ2244: [SDOI2011]攔截導彈

int 最長上升子序列 brush pen stdout sil def cst pos 問題:   printf("%.5f ",0):為什麽錯了? 註意:   初始值很重要 題解: 三維偏序問題; 記錄從前往後最長上升子序列長度pref,條數preg 從後往前suff,

題目1085 攔截導彈

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

1322【例6.4】攔截導彈問題(Noip1999)

【題目描述】某國為了防禦敵國的導彈襲擊,開發出一種導彈攔截系統,但是這種攔截系統有一個缺陷:雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能高於前一發的高度。某天,雷達捕捉到敵國的導彈來襲,由於該系統還在試用階段。所以一套系統有可能不能攔截所有的導彈。輸入導彈依

NYOJ 79 攔截導彈 (經典dp)

攔截導彈 時間限制:3000 ms  |  記憶體限制:65535 KB 難度:3 輸入 第一行輸入測試資料組數N(1<=N<=10) 接下來一行輸入這組測試資料共有多少個導彈m(1<=m<=20) 接下來行輸入導彈依次飛來的高度,所有高度值均

nyoj 79攔截導彈

攔截導彈 時間限制:3000 ms  |  記憶體限制:65535 KB 難度:3 描述 某國為了防禦敵國的導彈襲擊,發展中一種導彈攔截系統。但是這種導彈攔截系統有一個缺陷:雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能高於等於前一發的高度。某天

NYOJ 79 攔截導彈 (尋找遞減最長子序列)

攔截導彈 時間限制:3000 ms  |  記憶體限制:65535 KB 難度:3 描述 某國為了防禦敵國的導彈襲擊,發展中一種導彈攔截系統。但是這種導彈攔截系統有一個缺陷:雖然它的第一

NYOJ 79 攔截導彈(dp)

攔截導彈 時間限制:3000 ms  |  記憶體限制:65535 KB 難度:3 描述 某國為了防禦敵國的導彈襲擊,發展中一種導彈攔截系統。但是這種導彈攔截系統有一個缺陷:雖然它的第一發炮彈能夠

nyist oj 79 攔截導彈 (動態規劃基礎題)

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

NYOJ 79 攔截導彈 (經典dp) 最長上升子序列 LIS

描述 某國為了防禦敵國的導彈襲擊,發展中一種導彈攔截系統。但是這種導彈攔截系統有一個缺陷:雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能高於等於前一發的高度。某天,雷達捕捉到敵

題目1013開門人和關門人(字符串處理)

代碼 nbsp 字符串處理 博客園 簽到 style tdi reat sca 問題來源   http://ac.jobdu.com/problem.php?pid=1013 問題描述   每個人有一個簽到時間和一個簽退時間,找到最早簽到和最晚簽退的那個人的ID。

題目1004Median(qsort函數自定義cmp函數)

%d font com ron ring scan sort mat .com 題目鏈接:http://ac.jobdu.com/problem.php?pid=1004 詳解鏈接:https://github.com/zpfbuaa/JobduInCPlusPlus

題目1009二叉搜索樹(二叉搜索樹的建立)

nor style https 題目 .com tree ont cnblogs char 題目鏈接:http://ac.jobdu.com/problem.php?pid=1009 詳解鏈接:https://github.com/zpfbuaa/JobduInCPlus

題目1018統計同成績學生人數(數組或者map)

result ble tdi core %d github col targe map 題目鏈接:http://ac.jobdu.com/problem.php?pid=1018 詳解鏈接:https://github.com/zpfbuaa/JobduInCPlusPl

九度OJ 題目1204農夫、羊、菜和狼的故事

pla pan wol 題目 r+ ear play struct tab 思路:廣度 優先 記錄路徑長度 但是題目的意思好像是要記錄具體路徑 下次再搞吧 題目描述: 有一個農夫帶一只羊、一筐菜和一只狼過河.果沒有農夫看管,則狼要吃羊,羊要吃菜.但是船很小,只

九度OJ-題目1009二叉搜索樹

提交 二叉排序樹 軟件 amp cpp creat .com xheditor ear 題目1009:二叉搜索樹 從如今開始打算重新啟動刷題征程。程序猿的人生不須要解釋! 這次撇開poj hoj等難度較大的oj系統,從九度入手(已經非常長時間沒寫過代碼

九度-題目1138進制轉換

i++ 十進制 ring str 進制數 ble for 進制 進制轉換 http://ac.jobdu.com/problem.php?pid=1138 題目描述: 將一個長度最多為30位數字的十進制非負整數轉換為二進制數輸出。 輸入: 多組數據,每行為一個長度不超過