poj_1952最大下降子序列,统计个数

其实不算难的一道题,但憋了我好久,嗯,很爽。
#include
#include
#include
#include
using namespace std;
int n;
int a[5010],dp[5010],s[5010];
void solve()
{
    s[0]=1;
    int maxn=0;
    for(int i=0;ia[i])
            {
                int b=dp[i];
                dp[i]=max(dp[i],dp[j]+1);
                if(dp[i]==dp[j]+1&&dp[i]!=b)
                    {if(s[j]==0)
                    s[i]=0;
                    else s[i]=s[j];
                    }
                if(dp[i]==dp[j]+1&&dp[i]==b)
                    {s[i]+=s[j];
                        //cout<>n)
    {
        memset(dp,0,sizeof(dp));
        memset(s,0,sizeof(s));
        for(int i=0;i

你可能感兴趣的:(DP)