首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

求数组的最长递加子序列《编程之美》

2012-12-22 
求数组的最长递增子序列《编程之美》#includeiostreamusing namespace stdint main(){extern int f(int [

求数组的最长递增子序列《编程之美》

#include<iostream>using namespace std;int main(){    extern int f(int [],int);int a[8]={1,-2,5,-3,-1,4,6,0};    int m=f(a,8);    cout<<"最长递增子序列的长度是"<<m<<endl;system("Pause");return 0;}int f(int arry[],int n){  //Lis[i]存储着以arry[i]为最后一个元素的序列(该序列是递增子序列)的长度int *Lis=new int[n];   int i=0;   for(;i<n;i++)   {     Lis[i]=1;   }   for(i=0;i<n;i++)   {     for(int j=0;j<i;j++) {  if(arry[i]>arry[j]&&Lis[i]<Lis[j]+1)//动态规划的思想,状态转移方程的程序实现步骤  Lis[i]=Lis[j]+1; }   }      int max=Lis[0];  for(int k=1;k<n;k++)  {   if(Lis[k]>max) max=Lis[k];  }  delete []Lis;  return max;}
?直接上代码了,呵呵。代码的目的是求出数组a中的最长递增子序列。参考《编程之美》后编写的代码,求出的是长度,有兴趣的朋友可以继续输出这些子序列。

热点排行