zoukankan      html  css  js  c++  java
  • 最长上升子序列 CSU

    名词解释:

    一串数字比如1、5、3、6、9、8、10,它的子序列是从左到右不连续的若干个数,比如1、5、6,3、9、8、10都是它的子序列。

    最长上升子序列即从左到右严格增长的最长的一个子序列,1、5、6、9、10就是这个序列的一个最长上升子序列。

    给出若干序列,求出每个序列的最长上升子序列长度。

    Input

      多组数据,每组第一行正整数n,1 <= n <= 1000,第二行n个空格隔开的不大于1,000,000的正整数。

    Output

     每组数据输出一行,最长上升子序列的长度。

     

     

    Sample Input

    7
    1 5 3 6 9 8 10

    Sample Output

    5

    解题思路: LIS的题目,但是还不是很明白相关的算法,就使用了排序+LCS的方法

     1 #include <iostream>
     2 #include <algorithm>
     3 #include <stdio.h>
     4 #include <string.h>
     5 using namespace std;
     6 
     7 const int MAX  = 1000 + 92;
     8 int a[MAX],b[MAX];
     9 int visit[MAX][MAX];
    10 int n;
    11 
    12 void LCS()
    13 {
    14     for(int i = 1;i <=n;i++)
    15     {
    16 
    17         for(int j = 1;j <=n;j++)
    18         {
    19             if(a[i]==b[j])
    20                 visit[i][j] = visit[i-1][j-1] + 1;
    21             else if(visit[i-1][j]>visit[i][j-1])
    22                 visit[i][j] = visit[i-1][j];
    23             else
    24                 visit[i][j] = visit[i][j-1];
    25         }
    26 
    27     }
    28     cout<<visit[n][n]<<endl;
    29 
    30 }
    31 
    32 int main()
    33 {
    34 
    35     while(cin>>n)
    36     {
    37         memset(visit,0,sizeof(visit));
    38         a[0] = 0;
    39         b[0] = 0;
    40         for(int i = 1;i <=n;i++)
    41         {
    42             int temp;
    43             cin>>temp;
    44             a[i] = temp;
    45             b[i] = temp;
    46         }
    47 
    48         sort(b,b+n+1);
    49         LCS();
    50     }
    51 
    52 
    53     return 0;
    54 }
  • 相关阅读:
    JavaScript之闭包
    JavaScript之原型模式
    .NET Core3.1 解决跨域问题 Startup的配置
    .NTE Core 使用Editor.md富文本编辑器上传图片
    .NET Core3.1 WebApi 配置Swagger 超详细办法
    C#添加写日志,记录单个变量
    一个让我痛不欲生的算法题
    用EF 搭建底层
    用Linq To SQL 搭建底层
    安卓端腾讯QQ-【我的电脑】下载地址
  • 原文地址:https://www.cnblogs.com/a2985812043/p/7277772.html
Copyright © 2011-2022 走看看