• 算法进阶


    贪心算法:

    贪心算法之找零问题:
    假设你是商店老板需要找零n元钱,钱币的面额有:100元、50元、20元、5元、1元、,如何找零使得所需的钱币数量最少?
    代码实现:

    money = [100,50,20,5,1]         #钱币的面额大小

    
    

    def change_money(x):
    change = [0,0,0,0,0]            #对应钱币面额的个数
    for i,m in enumerate(money):
    change[i] = x // money[i]
    x = x % money[i]
    if x > 0:
    print("还剩%s" % x)
    return change

    
    

    print(change_money(356.2))

     
    习题:
    1、有n个非负整数,将其按照字符串拼接的方式拼接为一个整数。请问:如何拼接可以使得得到的整数最大?
    example: 12,34,56,78,9 =======> 拼接后的结果为987654321
    2、有n个非负整数,将其按照字符串拼接的方式拼接为一个整数。如何拼接可以使得得到的整数最小?
    思路和上边类似,只是结果相反

    动态规划:

    最长上升子序列:

    最长上升子序列(LIS):给定一个序列X,求X长度最大的连续递增的子序列。
    x = [1,7,2,8,3,5,2]    ,LIS(x) = [1,2,3,5]

    最长公共子序列:

    最长公共子序列(LCS)问题:给定两个序列X和Y,求X和Y长度最大的公共子序列。
    X = "ABBCDEFG"  y = "SBBCEGR"   LCS(X,Y)="BBC"       不过图还是没看懂。。

    最长公共子串:

    最长公共子序列(LCSS)问题:给定两个序列X和Y,求X和Y长度最大的公共子串。
    X = "ABBCDE"  Y = "BBBCRT"    LCSS(X,Y) = "BBC"

    编辑距离:

    编辑距离:指两个子串之间,有一个转成另一个所需最少的编辑操作次数。
    允许的编辑操作:替换、插入、删除
      x = "cofe" y = "coffee", 编辑距离为2(插入2次)
      x = "coffee" y = "coffe",  编辑距离为1(删除1次)
      x = "coffee" y = "coffye"  编辑距离为2(替换2次)
      x = "cofye"  y = "coffee"  编辑距离为2
    编辑距离可以用来表示两个字符串的相似度,应用广泛

    就这么点。。。都看不太懂。。。。

  • 相关阅读:
    apply call bind方法的区别和含义
    html头部meta标签
    语义化标签
    “文件名和url路径名”命名要点以及大小写问题
    BMP GIF PNG JPG等图片格式的区别和适用情况
    前端页面的性能优化
    js阻止默认事件,如a标签跳转和事件冒泡
    散列碰撞问题的解决——开链法(拉链法)
    substring()方法
    对学生成绩进行散列
  • 原文地址:https://www.cnblogs.com/52-qq/p/8407038.html
Copyright © 2020-2023  润新知