当前位置: 首页 > news >正文

实验课收获2025.10.30

这几周的实验课密集地学习了几个经典算法:归并排序、切绳子问题、最长公共子序列和背包问题。有的理解起来很快,有的却让我卡壳了好久。

对我来说接受度比较高的:背包问题
背包问题的动态规划思路我接受得很快。老师画出那张二维dp表的时候,我一下就明白了。“放还是不放”这个状态选择,以及 dp[i][j] = max(...) 这个状态转移方程,逻辑非常清晰,自己也能照着这个思路把代码实现出来。

最开始有点难以理解的:
1.归并排序:败在“合并”
“分治”思想好懂,递归拆分也没问题。但一到合并两个有序子数组的步骤,我就乱了。代码里全是处理边界和判断谁先推入新数组的 if-else,又长又容易出错。
我的解决措施是,我放下代码,用笔在纸上手动模拟了整个合并过程。画两个小数组,用两个指针一步步移动、比较、放入。这个笨方法让我瞬间理解了核心就是一个循环和两个指针的配合,想通后代码就简洁多了,变得思路清晰

2.切绳子问题:想不到思路
这道题要求绳子剪成段后乘积最大。我第一反应是暴力枚举,但显然不可行。当时完全没有思路,不知道如何高效地找到最优的切割方案。
后来是, 老师讲解了这道题算法的思想,并给出了关键结论:尽量多切出长度为3的段。我一开始不理解为什么是3,后来自己验证了几个例子(比如对比多切3和多切2的结果),才真正信服了这个策略。这让我明白,有些算法的“窍门”需要先接受结论,再通过实践去理解。

随笔最后:
这段时间的学习让我意识到,理解算法思想和动手实现是两回事。当代码写不下去时,回归最原始的手动模拟,或者用具体例子去验证规律,往往是打破僵局的最好方法。

http://www.jsqmd.com/news/26943/

相关文章:

  • DW1000芯片帧组成解析
  • revit api测量距离
  • 《程序员修炼之道》第一章有感
  • 10月30日日记
  • 代码大全2阅读笔记(3)
  • rustdesk 下载Windows版
  • apue笔记-进程环境、进程控制、进程关系
  • 数字识别(非汉字版)
  • Rust 解析验证码:结合 Tesseract OCR 进行文本识别
  • UML图以及设计模式部分总结
  • Consul访问宿主机api项目失败 - binzi
  • 读《代码大全2》第一章有感
  • 10.30博客
  • 251030
  • FOC学习
  • 软件技术第二次作业
  • 前端三剑客——javascript流程控制与异常处理
  • 《代码大全2》-观后感-一本可以陪伴整个职业生涯的“案头书”
  • Android Tor浏览器缩略图取证技术解析
  • 串口打印彩色log
  • 洛必达法则
  • 2025平航杯
  • 第七天第四天7.4
  • Linux提权基础
  • 第七周第三天7.3
  • 2025年有实力的GEO优化公司TOP10排行榜:GEO系统、GEO优化排名、GEO优化排名软件公司优选
  • rust学习(一)Windows安装rust环境
  • 第一次小测复习
  • 10月30日
  • [AGC007B] Construct Sequences 构造有感