poj1887(最長遞減子序列)
阿新 • • 發佈:2018-12-31
題意:題目很長,但內容很簡單,就是求一串數字的最長遞減子序列的長度。
程式碼:
#include<stdio.h> int arr[10010]; int dp[10010]; int main() { int ncase=1; while(1) { int i=0; int len; arr[0]=0; while(arr[i] > -1) { i++; scanf("%d",&arr[i]); } if(i == 1) break; for(len = 1;len<i;len++) dp[len] = 1; len--; for(int j=2;j<=len;j++) { int temp=0; for(int k = j-1;k>=1;k--) { if(arr[j] < arr[k] && temp<dp[k]) { temp = dp[k]; } } if(temp !=0) dp[j] = temp+1; } int ans =0; for(i=1;i<=len;i++) if(ans < dp[i]) ans = dp[i]; printf("Test #%d:\n",ncase++); printf(" maximum possible interceptions: %d\n\n",ans); } return 0; }