第二十三届“讯飞”杯 最长非降子序列(Sequence)

来源:互联网 发布:本地mp3听书软件 编辑:程序博客网 时间:2024/05/13 11:53
最长非降子序列(Sequence)
给定一个由N个正整数组成的序列S (N<=1000),从其中删除M个数字,使剩下的序列非降,编写函数Sequence(S)求M的最小值。


#include <iostream>
#include 
<string>
#include 
<fstream>
using namespace std;
#define MAX 1000
int f[MAX];//f[i]表示选i,i+1~n都不选 
int num[MAX];
int n;
int i,j;
int tmp;

int main()
{
ifstream 
in("in.txt");
in >>n;
for (i=1;i<=n;++i) in >>num[i];
f[
1]=1;
for (i=2;i<=n;++i)
{
tmp
=0;
for (j=1;j<i;++j)
{
if (num[i]>=num[j]&&f[j]>tmp)
{

tmp
=f[j];
}
//end if
f[i]=tmp+1;
cout 
<<"f["<<i<<"]= "<<f[i]<<endl;
}
//end for j
}
//end for i

//找最大
tmp=0;
for (i=1;i<=n;++i)
{
if (tmp<f[i]) tmp=f[i];
}
 
cout 
<<"Max:"<<tmp<<endl;
system (
"pause");
}





原创粉丝点击