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;
}