zoukankan      html  css  js  c++  java
  • 求最长不下降序列(动规)

    求最长不下降序列
    问题描述:
           设有由n个不相同的整数组成的数列,记为:b(1)、b(2)、……、b(n)且b(i)<>b(j)  (i<>j),若存在i1<i2<i3< … < ie 且有b(i1)<b(i2)< … <b(ie)则称为长度为e的不下降序列。程序要求,当原数列出之后,求出最长的不下降序列。
           例如13,7,9,16,38,24,37,18,44,19,21,22,63,15。例中13,16,18,19,21,22,63就是一个长度为7的不下降序列,同时也有7 ,9,16,18,19,21,22,63长度为8的不下降序列。
    输入:13 7 9 16 38 24 37 18 44 19 21 22 63 15
    输出:   8
        7  9  16  18  19  21  22  63
     1 #include<iostream>
     2 using namespace std;
     3 int pre[1001];
     4 int f[1001];
     5 int num[1001];
     6 int h,d,c,w=1;
     7 int maxn=0;
     8 void print (int a)
     9 {
    10     if(!pre[a])return ;
    11     print(pre[a]);
    12     cout<<num[a]<<" ";
    13 }
    14 int main() 
    15 {
    16     while(cin>>num[++h]);
    17     for(int i=1;i<=h;++i)
    18     {
    19         f[i]=1;
    20         maxn=0;
    21         for(int j=1;j<i;++j)
    22         {
    23             if(f[j]>maxn&&num[j]<num[i]) 
    24             {
    25                 maxn=f[j];
    26                 f[i]=f[j]+1;
    27                 c=j;
    28             }
    29         }
    30         pre[i]=c;
    31         if(f[i]>d)
    32         {
    33             d=f[i];
    34             w=i;
    35         }
    36     }
    37     cout<<d<<endl;
    38     print(w);
    39     return 0;
    40 }
  • 相关阅读:
    因浮动问题导致的IE6/7下的换行
    弹性回到顶部js代码
    页面图片的缩放问题
    js练习小结
    地址给的越精确,优先级越高
    判断IE浏览器的版本
    img图像对齐的方式
    三级导航收缩下拉框
    功能已经实现
    AE创建一个空白的Shapefile
  • 原文地址:https://www.cnblogs.com/mjtcn/p/6763554.html
Copyright © 2011-2022 走看看