
作业
liuxiang15
热爱生活,热爱编程~
展开
-
动态规划之最长公共子序列问题——Longest common subsequence(python3实现)
参考:算法导论中文版和课程讲义定义声明:最长公共子串要求在原字符串中连续,而子序列只需要保持相对顺序一致即可,并不要求连续。子序列定义问题描述: 枚举法1:描述一个最长公共子序列2:一个递归解3:计算LCS的长度 编写python3代码如下:# coding=utf-8"""Created on 2019.2...原创 2019-02-14 19:36:01 · 671 阅读 · 2 评论 -
python实现strassen算法
话不多说,先粘代码。可以直接运行,通过自行添加print语句可以进行矩阵运算结果的输出。实现方法:1.随机生成一定大小的方阵(矩阵)2.为了实现strassen算法,编写矩阵相加,相减,矩阵拆分成四个子矩阵,矩阵合并3.矩阵乘法常规算法和strassen算法4.compare函数对不同大小的矩阵乘法进行测试并输出运行时间5.为了验证计算正确,可以解除注释关于使用numpy的...原创 2019-02-09 17:33:17 · 1837 阅读 · 0 评论 -
动态规划之最长递增子序列问题(nlogn输出LIS)——Longest increasing subsequence(python3实现)
花了三天时间陆陆续续地才把代码和注释写好,有点心累。因为是一步步来,由简单到复杂,所以写的函数比较多。这是算法导论15.4-6上的一道题:问题描述:看到这个问题后有这样一种简单的解法.方法1:O(nlogn)排序+O(n2)LCS+去重(O(n))因为我之前写过一个求最长公共子序列(LCS)的DP算法,假设原数组为A,那么:1.数组A使用nlogn的排序算法得到有序...转载 2019-02-16 17:36:40 · 2279 阅读 · 3 评论 -
python3实现复杂度nlogn算法求平面上最短点对(带Tkinter界面)
因为对这个分治算法不是特别熟,而且第一次用Tkinter做界面,花了两天时间才做好,其中遇到了各种问题,幸好坚持下去并求助百度上的各路大神和文档写完了。感谢博客:https://blog.youkuaiyun.com/Lytning/article/details/25370169的博主,补充(2019.2.12)代码我进行了后续的界面优化和功能分离,将带GUI和不同数据量测试运行时间写在两个py文件...转载 2019-02-10 22:54:59 · 541 阅读 · 0 评论 -
动态规划之钢条切割问题——Rod-cutting problem
问题描述问题的最优解包含相关子问题的最优解,这些子问题我们可以独立求解。应用以下公式:方法1:暴力法长度为n的钢条可以有2^(n-1)中切割方案,因为离钢条左端距离分别为1,2,……,(n-1)的位置都有切或不切(0或1)两种选择,但是我认为有好多重复的情况,假设切割的位置存储在数组中,那么[1]和[n-1]其实是一样的,因为都代表切成长为1和(n-1)的两段。但是具体...原创 2019-02-13 14:26:06 · 2547 阅读 · 0 评论