Hello 算法 1.2.0 繁体中文 C++ 版你邁入資料結構與演算法的知識殿堂。 1.2 演算法是什麼 1.2.1 演算法定義 演算法(algorithm)是在有限時間內解決特定問題的一組指令或操作步驟,它具有以下特性。 ‧ 問題是明確的,包含清晰的輸入和輸出定義。 ‧ 具有可行性,能夠在有限步驟、時間和記憶體空間下完成。 ‧ 各步驟都有確定的含義,在相同的輸入和執行條件下,輸出始終相同。 1.2.2 資料結構定義 資料結構(data 執行效率可能相差很大,選擇合適的資料結構是關鍵。 圖 1‑4 資料結構與演算法的關係 資料結構與演算法猶如圖 1‑5 所示的拼裝積木。一套積木,除了包含許多零件之外,還附有詳細的組裝說明 書。我們按照說明書一步步操作,就能組裝出精美的積木模型。 第 1 章 初識演算法 www.hello‑algo.com 15 圖 1‑5 拼裝積木 兩者的詳細對應關係如表 1‑1 所示。 表 1‑1 將資料結構與演算法類比為拼裝積木 資料結構與演算法 拼裝積木 輸入資料 未拼裝的積木 資料結構 積木組織形式,包括形狀、大小、連線方式等 演算法 把積木拼成目標形態的一系列操作步驟 輸出資料 積木模型 值得說明的是,資料結構與演算法是獨立於程式語言的。正因如此,本書得以提供基於多種程式語言的實 現。 約定俗成的簡稱 在實際討論時,我們通常會將“資料結構與演算法”簡稱為“演算法”。比如眾所周知的 LeetCode0 码力 | 379 页 | 18.79 MB | 10 月前3
《深入浅出MFC》2/e人,尤其是我们 从事智能财产行为者,都能够尽快走过灰暗的一面。 在现代科技的协助下,文件影印、文件复制如此方便,智财权之尊重有如「君 子不欺暗室」。没有人知道我们私下的行为,只有我们自己心知肚明。《深入 浅出MFC》2/e 虽免费供大家阅读,但此种作法实非长久之计。为计久长,我 们应该尊重作家、尊重智财,以良好(至少不差)的环境培养有实力的优秀技 术作家,如此才有源源不断的好书可看。 你需要什麼軟硬體環境 / 29 讓我們使用同㆒種語言 / 30 本書符號習慣 / 34 磁片內容與安裝 / 34 範例程式說明 / 34 與前版本之差異 / 39 如何聯絡作者 / 40 第㆒篇 勿在浮砂築高臺 - 本書技術前提 / 001 第1章 Win32 程式基本觀念/ 003 这个世界却不是每天都有革命(revol uti on)发生。 Appl i cati on Framework 在软件界确实称得上具有革命精神。 仿真MFC?有必要吗?意义何在?如何仿真? 我已经在序言以及导读开宗明义说过了,这本书除了教导你使用MFC,另一个重要的功 能是让你认识一个application framework 的内部运作。以MFC 为教学载具,我既可以 让你领略application framework0 码力 | 1009 页 | 11.08 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 14 C++ 标准库系列课 - 你所不知道的 set 容器较字符串第一个字符 a[0] < b[0] 。 • 神奇的一幕发生了,“ any” 不见了!为什么?因为去重 ! • 为什么 set 会把 “ arch” 和 “ any” 视为相等的元素?明 明内容都不一样? set 的排序:自定义排序函数 • 首先搞懂 set 内部是怎么确定 两个元素 a 和 b 相等的: • !(a < b) && !(b < a) • 也就是说他 set 内部没有用到0 码力 | 83 页 | 10.23 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 01 学 C++ 从 CMake 学起没错, C 语言的前辈们也想到了,他们说,既然每个 .cpp 文件的这个部分是一模一样的 ,不如我把 hello() 的声明放到单独一个文件 hello.h 里,然后在需要用到 hello() 这个声 明的地方,打上一个记号, #include “hello.h” 。然后用一个小程序,自动在编译前把引号 内的文件名 hello.h 的内容插入到记号所在的位置,这样不就只用编辑 hello.h 一次了嘛0 码力 | 32 页 | 11.40 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 11 现代 CMake 进阶指南MSBuild Makefile 启动时会把每个文件都检测一遍, 浪费很多时间。特别是有很多文件,但是实 际需要构建的只有一小部分,从而是 I/O Bound 的时候, Ninja 的速度提升就很明 显。 然而某些专利公司的 CUDA toolkit 在 Windows 上只允许用 MSBuild 构建,不能 用 Ninja (怕不是和 Bill Gates 有什么交 易) 第 1 章:添加源文件0 码力 | 166 页 | 6.54 MB | 1 年前3
Hello 算法 1.0.0b4 C++版的单位价值最高,因此替 换后的总价值一定大于 res 。这与 res 是最优解矛盾,说明最优解中必须包含物品 ? 。 对于该解中的其他物品,我们也可以构建出上述矛盾。总而言之,单位价值更大的物品总是更优选择,这说 明贪心策略是有效的。 如下图所示,如果将物品重量和物品单位价值分别看作一个 2D 图表的横轴和纵轴,则分数背包问题可被转 化为“求在有限横轴区间下的最大围成面积”。 通过这个类比,我们可以从几何角度理解贪心策略的有效性。0 码力 | 343 页 | 27.39 MB | 1 年前3
Hello 算法 1.1.0 C++ 版的单位价值最高,因此替 换后的总价值一定大于 res 。这与 res 是最优解矛盾,说明最优解中必须包含物品 ? 。 对于该解中的其他物品,我们也可以构建出上述矛盾。总而言之,单位价值更大的物品总是更优选择,这说 明贪心策略是有效的。 如图 15‑6 所示,如果将物品重量和物品单位价值分别看作一张二维图表的横轴和纵轴,则分数背包问题可转 化为“求在有限横轴区间下围成的最大面积”。这个类比可以帮助我们从几何角度理解贪心策略的有效性。0 码力 | 379 页 | 18.47 MB | 1 年前3
Hello 算法 1.0.0b5 C++版的单位价值最高,因此替 换后的总价值一定大于 res 。这与 res 是最优解矛盾,说明最优解中必须包含物品 ? 。 对于该解中的其他物品,我们也可以构建出上述矛盾。总而言之,单位价值更大的物品总是更优选择,这说 明贪心策略是有效的。 如图 15‑6 所示,如果将物品重量和物品单位价值分别看作一个 2D 图表的横轴和纵轴,则分数背包问题可 被转化为“求在有限横轴区间下的最大围成面积”。这个类比可以帮助我们从几何角度理解贪心策略的有效0 码力 | 377 页 | 30.69 MB | 1 年前3
Hello 算法 1.0.0 C++版的单位价值最高,因此替 换后的总价值一定大于 res 。这与 res 是最优解矛盾,说明最优解中必须包含物品 ? 。 对于该解中的其他物品,我们也可以构建出上述矛盾。总而言之,单位价值更大的物品总是更优选择,这说 明贪心策略是有效的。 如图 15‑6 所示,如果将物品重量和物品单位价值分别看作一张二维图表的横轴和纵轴,则分数背包问题可转 化为“求在有限横轴区间下围成的最大面积”。这个类比可以帮助我们从几何角度理解贪心策略的有效性。0 码力 | 378 页 | 17.59 MB | 1 年前3
Hello 算法 1.2.0 简体中文 C++ 版的单位价值最高,因此替 换后的总价值一定大于 res 。这与 res 是最优解矛盾,说明最优解中必须包含物品 ? 。 对于该解中的其他物品,我们也可以构建出上述矛盾。总而言之,单位价值更大的物品总是更优选择,这说 明贪心策略是有效的。 如图 15‑6 所示,如果将物品重量和物品单位价值分别看作一张二维图表的横轴和纵轴,则分数背包问题可转 化为“求在有限横轴区间下围成的最大面积”。这个类比可以帮助我们从几何角度理解贪心策略的有效性。0 码力 | 379 页 | 18.48 MB | 10 月前3
共 10 条
- 1













