曲健磊的个人博客 2019-06-10 16:08 采纳率: 83.3%
浏览 352
已采纳

最长递增子序列问题可以在实际的工作中解决什么样的需求?

给定一个序列A及它的长度n(长度小于等于500),请返回LIS的长度。



测试样例:



[1,4,2,5,3],5



返回 3


# -*- coding:utf-8 -*-

class LongestIncreasingSubsequence:
    def getLIS(self, A, n):
        dp = [1 for i in range(n)]
        for i in range(n):
            maxtemp = 0
            for j in range(i):
                if A[j] < A[i] and dp[j] > maxtemp:
                    maxtemp = dp[j]
            dp[i] = maxtemp + 1
        return max(dp)



以上是这个经典问题的解法。在百度一搜 LIS(最长递增子序列) 或者 LCS(最长公共子序列) 通篇都在讲什么解法最优,解的过程如何,就是没有人解释这个算法可以解决现实中的什么问题,在工作中解决什么需求,动不动就在谈思想,如果你所学的算法、技术不是为了业务服务,那学习这些东西还有什么意义?



话说回来,有木有大佬能解答一下小弟的疑问

  • 写回答

2条回答 默认 最新

  • 小熊之怒 2019-06-12 17:51
    关注

    从算法思想找现实案例的基本都是少数,绝大部分都是,从案例分析到匹配算法。
    所以你可能学了很多种不同的算法,没有用到现实中,你会觉得学那么多没用。
    但是你的潜意识懂得了这种思想,然后当你在现实生活中遇到实际问题的时候,你会很快反应到那些算法可能会有用,哪些又是最优方法。

    那我自己来说,我当初学排序和查找时候,没觉得什么东西需要排序,需要查找,总是觉得生活中乱乱的,你这种查找或者排序肯定不行。
    后来工作了,关于游戏排行榜这里的处理的逻辑,查找一个玩家应该排序到哪里,然后立马想到了二分查找。这就是从现实问题找思想。体会很深。

    这种算法思想是通过生活例子抽象出来的一种总结,你再从这种抽象出来的去还原,相比从生活中抽象,肯定不是那么容易,所以学了就学了,
    先总结着,或许你可以一边思考生活中,什么事情,什么东西可以在程序中怎么设计,熟练了,再反向思维。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题