问题标题: 酷町堂:1526 最长的降序序列 80分

0
1
已解决
张瑀涵
张瑀涵
高级光能
高级光能
#include<iostream>
using namespace std;
int main()
{
    int n,a[5010],i,j,f[5010],max=0,count=0,num[5010]={0};
    cin>>n;
    for(i=1;i<=n;i++)
        cin>>a[i];
    for(i=1;i<=n;i++)
    {
        f[i]=1;
        int flag=0;
        for(int k=1;k<i;k++)
        {
            if(a[i]==a[k])
            {
                flag=k;
            }
        }
        if(a[i-1]==a[i])
            num[i]=0;
        else
        {
            for(j=flag+1;j<i;j++)
            {
                if(a[i]<a[j]&&f[i]<f[j]+1)
                {
                    num[i]=num[j];
                    f[i]=f[j]+1;
                }   
                else if(a[i]<a[j]&&f[i]==f[j]+1)
                {
                    num[i]+=num[j];
                }
            }
            if(f[i]==1)
                num[i]=1;
        }
    }
    for(i=1;i<=n;i++)
    {
        if(max<f[i])
            max=f[i];
    } 
    for(i=1;i<=n;i++)
    {
        if(f[i]==max)
            count+=num[i];
    }
    cout<<max<<" "<<count;
    return 0;
}

 


0
已采纳
程天瑞
程天瑞
资深守护
资深守护

,可以找到相同就加;

0
0
我要回答