日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

H - 拦截导弹 OpenJ_Bailian - 2945(dp动态规划)

發布時間:2023/12/15 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 H - 拦截导弹 OpenJ_Bailian - 2945(dp动态规划) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

某國為了防御敵國的導彈襲擊,開發出一種導彈攔截系統。但是這種導彈攔截系統有一個缺陷:雖然它的第一發炮彈能夠到達任意的高度,但是以后每一發炮彈都不能高于前一發的高度。某天,雷達捕捉到敵國的導彈來襲,并觀測到導彈依次飛來的高度,請計算這套系統最多能攔截多少導彈。攔截來襲導彈時,必須按來襲導彈襲擊的時間順序,不允許先攔截后面的導彈,再攔截前面的導彈。
Input
輸入有兩行,
第一行,輸入雷達捕捉到的敵國導彈的數量k(k<=25),
第二行,輸入k個正整數,表示k枚導彈的高度,按來襲導彈的襲擊時間順序給出,以空格分隔。
Output
輸出只有一行,包含一個整數,表示最多能攔截多少枚導彈。
Sample Input
8
300 207 155 300 299 170 158 65
Sample Output
6
dp入門題,,這種題有兩種做法,一種是兩層循環,像這個題目數據量比較小,可以這么做。但是如果數據量大了,就只能用二分的方法了。這里介紹第一種方法。。
代碼如下:

#include<iostream> #include<algorithm> using namespace std; int a[1010]; int dp[1010];int main() {int n;cin>>n;for(int i=0;i<n;i++){cin>>a[i];dp[i]=1;//dp這個數組代表每一個導彈前面大于等于這個高度的導彈數目。一開始全部更新為一。}for(int i=0;i<n;i++){for(int j=0;j<i;j++){if(a[j]>=a[i])dp[i]=max(dp[i],dp[j]+1);//如果以前的比現在的這個高,就在dp[j]上加一,代表現在的 。}}sort(dp,dp+n);cout<<dp[n-1]<<endl;return 0; }

dp是acm中特別重要的一種算法,必須要理解。。
努力加油a啊,(o)/~

總結

以上是生活随笔為你收集整理的H - 拦截导弹 OpenJ_Bailian - 2945(dp动态规划)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。