题解 | #拦截导弹#

拦截导弹

https://www.nowcoder.com/practice/dad3aa23d74b4aaea0749042bba2358a

#include <bits/stdc++.h>
using namespace std;

int main() {
    int n;cin>>n;
    int arr[n];
    int dp[n];
    for(int i =0;i<n;i++){
        cin>>arr[i];
        dp[i] = 1;
    }
    for(int i =1;i<n;i++){
        for(int j=0;j<i;j++){
            //如果前面的大于后面的,则+1
            if(arr[j]>=arr[i]){
                dp[i] = max(dp[i],dp[j]+1);
            }else {
            }
        }
    }
    // for(auto a:dp)
    //     cout<<a<<endl;
    cout<<*max_element(dp,dp+n);
}
// 64 位输出请用 printf("%lld")

王道的思路,关键是写出状态转移方程

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务