实验课收获2025.10.30

news/2025/10/31 0:03:52/文章来源:https://www.cnblogs.com/esther111/p/19178396

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

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

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/951216.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DW1000芯片帧组成解析

对DW1000链路层协议帧格式进行简单介绍。概述 在物联网定位与数据传输场景中,DW1000 作为遵循 IEEE802.15.4-2011 UWB 标准的芯片,其核心数据传输载体是 “帧”。它像一个精密的 “快递包裹”,通过三层结构(同步头…

revit api测量距离

revit api测量距离根据起始点,和方向向量,创建模型线,获取距离这里的方向是向上的,可以根据自己的需要修改using Autodesk.Revit.Attributes; using Autodesk.Revit.DB; using Autodesk.Revit.UI; using System;[T…

《程序员修炼之道》第一章有感

《程序员修炼之道》第一章有感翻开《程序员修炼之道》第一章,瞬间跳出了“完成任务就够了”的误区。程序员不是单纯写功能的,更要主动打磨代码、想着优化提升。这场职业修炼,从认真对待每一行代码开始。

10月30日日记

1.今天上体育课学习三步上篮,和学习数据结构 2.明天休息 3.数据库索引为什么多用B+树而不是哈希表

代码大全2阅读笔记(3)

一、开篇:别让 “交付” 成为代码质量的终点 读完《代码大全 2》的维护与优化章节,最颠覆认知的一句话是:“代码的生命周期中,编码只占 20%,剩下 80% 的时间都在维护与迭代”。很多时候我们把 “代码能运行、功能…

rustdesk 下载Windows版

蓝奏云下载 rustdesk-1.4.3-x86_64.exe rustdesk-1.4.2-x86_64.exe rustdesk-1.4.1-x86_64.exe 旧版下载 rustdesk-1.4.0-x86_64.exe最新版随github更新

apue笔记-进程环境、进程控制、进程关系

原文博客:https://nosae.top进程环境 C程序总是从main函数开始执行,内核在调用main之前会调用一个特殊的启动例程,由这个例程去调用main。这个例程如果用C代码来写(一般是用汇编来写),那就是exit(main(argc, arg…

数字识别(非汉字版)

1 训练 import torch from torch.utils.data import DataLoader from torchvision import transforms from torchvision.datasets import MNIST import matplotlib.pyplot as plt import matplotlib import numpy as …

Rust 解析验证码:结合 Tesseract OCR 进行文本识别

环境准备 1.1 安装 RustRust 可通过官方的 rustup 进行安装: curl --proto =https --tlsv1.2 -sSf https://sh.rustup.rs | sh 更多内容访问ttocr.com或联系1436423940 安装完成后,检查 Rust 是否可用: rustc --ver…

UML图以及设计模式部分总结

今天将软考内容中的UML统一建模语言和设计模式的部分内容进行了复习,具体内容总结如下: 1.类图,用例图,序列图,通信图,状态图:状态图强调一个对象行为的事件顺序,包括初态中间态以及终态, 初态只有一个,而终…

Consul访问宿主机api项目失败 - binzi

最近在学习consul,在docker上启动consul实例后。本地有一个.net core api项目,项目主要是实现启动就向consul注册及有一个心跳检查,启动调试后可以看到已经成功向consul注册了服务,就是心跳检查一直不成功,最后不…

读《代码大全2》第一章有感

读《代码大全2》第一章有感以前总觉得代码能跑起来就行,读了《代码大全2》第一章才发现,好代码远不止于此。可读性、可维护性才是关键,那些随意的命名和缺失的注释,其实都是后续的麻烦。新手入门,先把规范记牢准没…

251030

251030寒冷的夜里,如果不是有特别的理由没人会待在街上,大家都有不惜牺牲自己也要得到的东西,这种感觉就像是费劲千辛万苦地蒸发自己,让自己动起来去触碰不动的东西,所以视觉是很宝贵的,但听觉却是多余的,聋哑真…

FOC学习

FOC学习 无刷电机的定子有 3 组绕组(U、V、W),转子是永磁体。六步换向的核心是 “按转子位置给对应绕组通电”,而位置检测全靠电机内置的 3 个霍尔传感器(互差 120 电气角)。3 个霍尔传感器组合起来,每旋转一圈…

软件技术第二次作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/zjlg/25rjjc 这个作业的目标:实现一个命令行文本计数统计程序,能正确统计导入的纯英文txt文本中的字符数,单词数,句子数。 姓名 学号 万绮梦 2023339915012 …

前端三剑客——javascript流程控制与异常处理

大纲 :1.判断语句/分支语句:if else if elseswitch case2.循环语句/遍历语句whilefor循环/for遍历3.补充:forEach(数组的内置方法)4.异常处理和主动抛出异常5.时间相关判断语句/分支语句1.if else 和 if else…

《代码大全2》-观后感-一本可以陪伴整个职业生涯的“案头书”

现在读不懂全部,但未来一定会感谢现在翻开它的自己 坦白说,以我目前大二的知识储备和项目经验,《代码大全2》里的某些章节,比如关于系统考虑、软件架构的部分,我读起来还有些吃力,感觉像是在看“天书”。它们所描…

Android Tor浏览器缩略图取证技术解析

本文详细介绍了在Android设备上定位Tor浏览器标签页缩略图的技术方法,包括文件路径、格式解析和取证工具使用,为数字取证调查提供了新的技术突破。Android Tor浏览器缩略图取证技术解析 Tor浏览器调查通常仅限于用户…

串口打印彩色log

单片机开发中串口日志的打印极大方便了我的调试工作,随着日志数据的增加又带来新的问题:短时间吐出的大量数据实在是让人眼花缭乱。 如何在大量数据中一眼找到重点成为我今天的课题。如果在终端中能以不同颜色甚至不…