算法进阶

贪心算法:

复制代码
贪心算法之找零问题:
假设你是商店老板需要找零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
编辑距离可以用来表示两个字符串的相似度,应用广泛

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

 

posted @   一石数字欠我15w!!!  阅读(328)  评论(0编辑  收藏  举报
编辑推荐:
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
点击右上角即可分享
微信分享提示