1. 程式人生 > 其它 >poj 1836(動態規劃最長正序子序列)

poj 1836(動態規劃最長正序子序列)

#include<iostream>
using namespace std;
const int maxn = 1005;
double data[maxn];
int f[maxn],g[maxn],n,ans;
int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    while(cin>>n){
        for(int i=1;i<=n;i++){
            cin>>data[i];
            f[i] = 1;
            g[i] 
= 1; } for(int i=1;i<=n;i++){ for(int j=1;j<i;j++){ if(data[j]<data[i]){ f[i] = max(f[i],f[j]+1); } } } for(int i=n;i>0;i--){ for(int j=n;j>i;j--){ if
(data[j]<data[i]){ g[i] = max(g[i],g[j]+1); } } } ans = -1; // for(int i=1;i<=n;i++){ // if((i>1&&data[i-1]==data[i])||(i<n&&data[i]==data[i+1])){ // ans = max(ans,f[i]+g[i]); // }
// else{ // ans = max(ans,f[i]+g[i]-1); // } // } for(int i=1;i<=n;i++){ for(int j=i+1;j<=n;j++){ ans = max(ans,f[i]+g[j]); } } cout<<n-ans<<endl; } return 0; }