題目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 |
演算法思想:
動態規劃,使用一個一維陣列來記錄當前元素所能攔截的最多導彈,演算法與單調遞增子序列一樣。
遞推公式:
原始碼
#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 描述 某國為了防禦敵國的導彈襲擊,發展中一種導彈攔截系統。但是這種導彈攔截系統有一個缺陷:雖然它的第一發炮彈能夠到達
BZOJ:2244: [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。
題目1004:Median(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位數字的十進制非負整數轉換為二進制數輸出。 輸入: 多組數據,每行為一個長度不超過