某國為了防禦敵國的飛彈襲擊,發展出一種飛彈攔截系統。但是這種飛彈攔截系統有乙個缺陷:雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能高於前一發的高度。某天,雷達捕捉到敵國的飛彈來襲。由於該系統還在試用階段,所以只有一套系統,因此有可能不能攔截所有的飛彈。
輸入資料為飛彈依次飛來的高度,所有高度值均為不大於30000的正整數。
輸出只有一行是這套系統最多能攔截的飛彈數和要攔截所有飛彈最少要配備這種飛彈攔截系統的套數。兩個資料之間用乙個空格隔開.
給出一串數字,然後讓你求最長遞增序列或最長遞減序列。
首先輸入不固定數量的數字,可以用getchar()來識別回車,也就是結尾。
while(cin>>a)
然後就是尋找遞減子串行。可以給陣列num的下標為0賦值為無窮大,下標為1開始賦值為輸入的數值。
for(i=0;i<=m;i++)
dtgh[i]=0;
num[0]=300001;
for(i=1;i<=m;i++)
ans=max(ans,dp[i]);//找最長上公升子串行長度
}
優化版本#include#include#include#include#include#include#include#includeusing namespace std;
#define ll long long
const int maxn=5e4+5;
const int inf=1e9+7;
//最長上公升子串行
int dp[maxn];
int num[maxn];
int main()
} */ for(int i=1;i<=m;i++)
} cout
} return 0;
}
最長遞增子串行問題
給定乙個長度為n的陣列,找出乙個最長的單調自增子序列 不一定連續,但是順序不能亂 例如 給定乙個長度為6的陣列a,則其最長的單調遞增子串行為,長度為4.include define maxn 100 假設最多有100個元素 using namespace std int l maxn l i 表示元...
最長遞增子串行問題
給定正整數序列x1,xn。1 計算其最長遞增子串行的長度s。2 計算從給定的序列中最多可取出多少個長度為s的遞增子串行。3 如果允許在取出的序列中多次使用x1和 xn,則從給定序列中最多可取出多少個長度為s的遞增子串行。設計有效演算法完成 1 2 3 提出的計算任務。由檔案input.txt提供輸入...
最長遞增子串行問題
目錄 最長遞增子串行問題 合唱隊問題應用 最長公共子串 lcs 問題 給定乙個長度為n的陣列,找出乙個最長的單調自增子序列 不一定連續,但是順序不能亂 例如 給定乙個長度為6的陣列a,則其最長的單調遞增子串行為,長度為4.dp法 設長度為n的陣列為 for int i 1 i 0 j int max...