Hrbust 1835 최장 증가 하위 시퀀스(dp)

3683 단어 동적 기획
Time Limit: 1000 MS Memory Limit: 32768 K Total Submit: 377 (132 users) Total Accepted: 170 (122 users) Rating: Special Judge: No Description 은 가장 긴 증가 하위 시퀀스 (1,7,3,5,9,8) 를 구하는 숫자 시퀀스를 제공합니다.
(1,7)과 (3,4,8)은 그 증가 서열이지만 가장 긴 증가 서열은 (1,3,5,8)이다.
Input 본 문제는 여러 개의 테스트 데이터가 있는데, 각 그룹의 테스트 데이터 첫 줄은 정수 n(n<=100)이 서열 길이를 대표한다.
두 번째 줄은 n개의 정수다.
Output 최대 증가 하위 시퀀스 길이 Sample Input 7
1 7 3 5 9 4 8
Sample Output 4
최장자 서열 시리즈는 수열을 옮겨다니며 현재 옮겨다니는 숫자 이전의 수열에서 점증 조건에 부합되는 (>=)의 최장 길이를 찾아내고 계승을 옮긴다. 조건에 부합되는 숫자는 그의 저장 길이를 기록하고 옮겨다니는 숫자로 전달할 때 +1(옮겨다니는 숫자 자체)로 저장한다.
#include///  !       get√
#include///                     ,                 
#include
using namespace std;
int main()
{
    int i,j,a[1080],dp[1080],n;///    ,dp       
    while(scanf("%d",&n)!=EOF)
    {
        for(i=0;i"%d",&a[i]);
        }
        memset(dp,0,sizeof(dp));
        int flag;
        int maxn=1;
        dp[0]=1;///            1
        for(i=1;i///      
        {
            flag=dp[i];///           ,       0
            for(j=0;j///     dp          
            {
                if(a[i]>a[j]&&dp[j]>flag)///
                {
                    flag=dp[j];///    
                }///           ,         , flag,     i       
            }
            dp[i]=flag+1;///      i,      +1,   i   
            maxn=max(maxn,dp[i]);///           
        }///      , flag +1(i  )    i   
//        for(i=0;i<=n;i++)
//        {
//            printf("%d
",dp[i]);
// } // sort(dp,dp+n);/// dp , , printf("%d
"
,maxn); } return 0; }

좋은 웹페이지 즐겨찾기