openjudge 攔截導彈 (DP 動態規劃)

樣例輸入
8
389 207 155 300 299 170 158 65
樣例輸出
6

當整個數組位遞增序列時候輸出1,所以用來記錄最大值maxx=1,不然會輸出0,卡在這裏好久,dp寫的沒錯,但是ac不了,後來對比別人的代碼,發現問題,還有一個注意點,a[i]>=a[j](i<j) ,因爲是不遞增序列,等於情況符合

#include <iostream>
#include "cstring"
#include <stdio.h>
#include "iomanip"
#include "vector"
#include "cmath"
#include "stack"
#include "algorithm"
#include <math.h>
#include "map"
#include "queue"
using namespace std;
int main()
{
    freopen("a.txt","r",stdin   );
     int n,a[20]={0},dp[20]={0};
    cin>>n;
    int i,j;
    for(i=0;i<n;i++)
    {
        cin>>a[i];
        dp[i]=1;
    }
    int maxx=1;
    for(i=0;i<n;i++)
    {
        for(j=0;j<i;j++)
        {
            if(a[i]<=a[j])
            {
                dp[i]=max(dp[i],dp[j]+1);

                maxx=max(dp[i],maxx);
            }
        }
    }
//    for(i=0;i<n;i++)
//    maxx=max(dp[i],maxx);
    cout<<maxx;
    return 0;

}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章