24h購物| | PChome| 登入
2009-07-04 22:16:10| 人氣999| 回應0 | 上一篇 | 下一篇

ACM 11456 11456 - Trainsorting

推薦 0 收藏 0 轉貼0 訂閱站台

作法:DP(LIS+LDS)

/***********************************************************/

#include<stdio.h>  
#include<stdlib.h>  
 
int DP(int M,int num[])     
{     
 int a,b;  
 int LIS[2001]={0};  
 int LDS[2001]={0};  
   
 for(a=0;a<M;a++) LIS[a]=LDS[a]=1;  
   
 for(a=0;a<M;a++)  
    for(b=0;b<a;b++)  
       {  
          if(num[b]<num[a]&&LDS[a]<LDS[b]+1)  
            LDS[a]=LDS[b]+1;  
          if(num[b]>num[a]&&LIS[a]<LIS[b]+1)  
            LIS[a]=LIS[b]+1;    
       }  
    int max=0;     
    for(a=0;a<M;a++)     
       if(LDS[a]+LIS[a]-1>max) max=LDS[a]+LIS[a]-1;  
 
    return max;  
}    
main()  
{   
 int n,m,a,b,c;  
 scanf("%d",&n);   
 while(n--)  
  {  
   int num[2001]={0};  
   scanf("%d",&m);   
   for(a=m-1;a>=0;a--)  
    scanf("%d",&num[a]);   
     printf("%d\n",DP(m,num));   
  }     
 return 0;  
}

台長: 來源不明
人氣(999) | 回應(0)| 推薦 (0)| 收藏 (0)| 轉寄
全站分類: 數位資訊(科技、網路、通訊、家電) | 個人分類: ACM |
此分類下一篇:ACM 138 Q138: Street Numbers
此分類上一篇:ACM 10297 Q10297: Beavergnaw

是 (若未登入"個人新聞台帳號"則看不到回覆唷!)
* 請輸入識別碼:
請輸入圖片中算式的結果(可能為0) 
(有*為必填)
TOP
詳全文