zoukankan      html  css  js  c++  java
  • DP最长递增字符串

    对于最简单DP问题,比如7 9 1 10 3中最长的递增字符串就是7 9 10,所以长度是3.

    对于这个问题,就是从第二个开始,让后面的每一个字符都假设作为咱们要找的最长的字符串的最后一个字符,然后从第一个字符开始和找,这样逐渐找就能找到最长的^…^

    状态转移方程为

    状态转移方程 DP[ i ] = max { 1 ,max(DP[ 0 ] ...DP[ k ]... DP[ i-1 ]) +1 |A[ k ] < A[ i ] }

    具体解释见代码

     1 #include<stdio.h>
     2 #include<string.h>
     3 #include<iostream>
     4 #include<algorithm>
     5 using namespace std;
     6 int main()
     7 {
     8     int ss[1005];//存储字符
     9     int sslen[1005];//存储每一个到当前字符所形成的最长递增字符串的长度
    10     int n,maxx,maxlen;
    11     while(cin>>n){
    12             maxlen=1;//记录最长的字符串的长度
    13         memset (ss,0,sizeof(ss));
    14     for(int i=1;i<=n;i++)
    15         cin>>ss[i];
    16     for(int k=1;k<=n;k++)
    17         sslen[k]=1;//初始化数组
    18     for(int i=2;i<=n;i++){
    19         maxx=0;//记录到当前字符的最长的递增个数
    20         for(int j=1;j<=i-1;j++){
    21             if(ss[j]<ss[i]&&sslen[j]>maxx){
    22                 maxx=sslen[j];
    23             }
    24         }
    25         sslen[i]=maxx+1;
    26     if(sslen[i]>maxlen)
    27         maxlen=sslen[i];
    28     }
    29     cout<<maxlen<<endl;
    30     }
    31 }
    View Code
    你若盛开,清风自来...
  • 相关阅读:
    线段树优化建图 && CF-786B.Legacy(优化建图,dijkstra)
    构建高性能JavaScript应用
    关于互联网应用前端架构的一些思考
    Router模块
    View模块
    Backbone源码解析系列
    Model模块
    Events模块
    Backbone源码风格
    jQuery选择器总结
  • 原文地址:https://www.cnblogs.com/shangjindexiaoqingnian/p/5743459.html
Copyright © 2011-2022 走看看