hdoj1087
最长上升子序列(不连续)
#include<iostream> using namespace std; int main() { int n,max; int a[1000]={0},f[1000]={0}; while(cin>>n&&n!=0) { for(int k=0;k<n;k++) { cin>>a[k]; f[k] = a[k]; } max = 0; for(int i=1;i<n;i++) { for(int j=0;j<i;j++) if(a[i]>a[j] && f[i]<f[j]+a[i]) f[i] = f[j]+a[i]; if(f[i] > max) max=f[i]; } cout<<max<<endl; } }