2023年7月27日星期四

动态规划 解决组合问题

 今天 老婆大人给我出了个难题, 他有一些票据,需要把这些票据组合成 需要的金额来报销,搞了很久也没找到合适的组合。于是她问我, 我第一反应是写个程序来做,但是想了想还是很复杂的 。想到了用gpt, 于是问了一下  :

请帮我从这些数字14.47, 13.87,13.57,11.9 ,15.55,11.36,14.77,11.3 ,14.77,11 ,14.05, 13.27,13.91,14.77,15.5 ,14.21,11.3 ,15.52,11.9 ,11.3 ,17.75,14.75,13.4 , 12.54,16.11,13.55,11.35,12.52,9 ,22.87,12.77, 12.8 ,13.55,13.55,11.56, 13.26,15.59,14.2 ,中挑出 n个数字,使这n个数字的和 为 198.71 或 173.43

gpt没有直接给我答案,也是给了我一个 python代码 , 通过回溯算法来找到符合条件的 n 个数字的组合, 但运行速度太慢了, “请注意,这是一个组合问题,对于较大的数字列表,计算可能会较慢”

确实很慢,你有什么更好的 方法么 ?

对于组合问题,尤其是当数字列表较大时,回溯算法可能会显得较慢。一种更高效的方法是使用动态规划(Dynamic Programming),通过动态地构建一个二维数组来记录可能的组合和中间结果,从而避免重复计算,提高计算效率。

下面是使用动态规划解决该问题的Python代码:









2023年7月13日星期四

我的英语学习里程碑

 今天中午睡醒,看到一个英文演讲,戴上2个耳机,

演讲者的纯正英语和满满的激情,让我一下融入了环境,我竟然连续听了十几分钟, 

我发现我并没有开字幕,我能听懂演讲者的意思,声情并茂,好像我的听力突然就迈上了一个台阶,

I'm excited! 这可能是我英语学习的重要里程碑 milestone。

虽然后面的有点难听懂,我还是高兴的坚持听完,这可能是我半年来英语学习的重要馈赠 。 

总结一下可能的原因:

1. 2~3个月的磨耳朵英语,

2. 正确的单词记忆法  

3. 英语兴趣的培养,使我可以坚持下去