C语言贪心算法:背包问题 想象一下,你准备去旅行,只带了一个容量有限的背包,但你有很多需要的物品想要带上。这些物品大小各异,价值也不一样,比如一本厚重但充满知识的旅行指南,轻便却能记录美好瞬间的相机,以及保暖但占空间的外套。如何在有限的背包容量下,装入最有价值的物品,让这次旅行更加完美?这就是生活中的背包问题。 在 C 语言算法领域,背包问题是一个经典的组合优化问题。给定一个固定容量的背包和一组物品,每个物品都有自己的重 C语言 郎哥 2025-03-09 392 热度 0评论
C语言递归算法的实现 我们先来看看生活中一个有趣的现象:俄罗斯套娃。当你拿到一个俄罗斯套娃时,会发现大套娃里装着小一号的套娃,而这个小套娃里又有更小的套娃,层层嵌套,直到最里面那个最小的套娃。这就像是一种 “自己包含自己” 的结构,而递归算法的思想与之十分相似。 在 C 语言中,递归是指一个函数在其定义中直接或间接调用自身的编程方法 。简单来说,就是函数自己调用自己。递归主要用于将复杂的问题分解为较小的、相同类型的子问 C语言 郎哥 2025-03-07 383 热度 0评论
汉诺塔问题 汉诺塔(Tower of Hanoi)问题是一个古老的数学难题和经典的递归问题。问题起源于一个古老的传说:有三根柱子,其中一根柱子上自上而下按大小顺序摞着n个不同大小的圆盘,目标是将这些圆盘移动到另外一根柱子上,并满足以下规则: 一次只能移动一个圆盘。 大的圆盘不能叠放在小的圆盘之上。 可以使用第三根柱子作为辅助。 要求用C语言实现汉诺塔问题的解。 解决汉诺塔问题的关键在于理解和应用递归和分治思想 C语言 郎哥 2024-09-20 1114 热度 0评论
链表在C语言的实现 本文以图书馆的书目信息表为例,讲解链表在C语言的实现。 链表存储的元素称为节点,节点由数据域和至少一个指针域构成,数据域存储数据,指针域存储指向该节点前驱或后驱节点的指针。若节点只有一个指针域,一般指向该节点的后驱节点,若无后驱节点,则该指针域为空或NULL。 typedef struct Node{ void* data; //数据域 struct Node *p C语言 郎哥 2024-09-19 949 热度 0评论
C语言实现狄克斯特拉算法 想象一下你站在一个城市的某个地方(起点),想要去城市的其他所有地方(节点),而且你知道每条路(边)的长度(权重)。狄克斯特拉算法就是帮助你找出从你现在站的地方到城市中其他每个地方的最短路径的方法。 狄克斯特拉算法(Dijkstra's algorithm),又称迪杰斯特拉算法,是计算机科学中一种非常重要的算法,它用于在加权图中找到从单一源点到其他所有节点的最短路径。这里的“加权图”指的是图中的每条 C语言 郎哥 2024-08-03 837 热度 0评论
回溯法与经典八皇后问题 回溯法,其实就是一个“试错”的过程。就像你在解一个复杂的拼图或者迷宫游戏,你会尝试不同的路径,如果发现当前路径走不通,或者不符合条件,你就会退回到上一个分叉点,然后选择另一条路继续尝试。 在编程中,回溯法常用于解决组合问题、搜索问题、决策问题等。它的核心思想是: 定义问题的解空间:这就像是把迷宫的所有可能路径都列出来。 选择搜索策略:决定先尝试哪条路径。比如,你可以从起点开始,每次选择一条没走过的 算法 郎哥 2024-07-05 1077 热度 0评论
贪心算法思想 现在假设有面值1角、2角、5角、10角(1元)的硬币各10枚,要求用最少的硬币数量来找零。 例如:找1.3元的零钱,1.3元转换成角,就是13角。 找零钱就是把不同面值或同一面值的硬币组合起来,组合的面值等于需要找零的钱数。1.3元就是13角。 下面有A、B、C三种硬币的组合方法: A组合方法:1个10角的硬币、3个1角的硬币; B组合方法:1个10角的硬币、1个2角的硬币、1个1角的1币; C组 算法 郎哥 2024-06-22 1131 热度 0评论
算法思想:穷举法 穷举法思想,也称为暴力枚举法或遍历法,是一种简单直观解决问题的方法。它的基本思想是对所有可能的情况进行逐一测试,直至找到符合要求的解或确定无解为止。 穷举法思想主要涉及以下几个关键步骤: 明确问题所有可能解构成的空间或集合。这个空间可以是一个数值范围、一个字符串集合、一个组合或排列的集合等。 程序按照某种顺序(如从小到大、从前往后等)遍历这个空间中的每一个元素或状态。对于每个元素或状态,程序会检查 算法 郎哥 2024-06-05 2285 热度 0评论
图存储结构详解与C代码实现 邻接矩阵就像一个巨大的表格,表的行和列都代表图中的节点。如果节点A和节点B之间有边相连,那么在这个表格中,A行B列(或B行A列,对于无向图来说)的位置上就会标记为1(或者其它表示“有连接”的值)。如果它们之间没有边相连,那么这个位置就标记为0(或其它表示“无连接”的值)。 图 1-28图的邻接矩阵 以图1-28为例,我们来理解图的邻接矩阵。 在无向图中,边是双向的,即如果顶点i与顶点 算法 郎哥 2024-06-02 1654 热度 0评论
数据结构与算法:快速理解数据结构 数据结构是指数据在计算机系统中的组织和存储方式。数据是能够带给我们信息的数值、文字、图像、视频、符号等内容,数据按照一定的结构组织在一起称为数据的逻辑结构,数据的逻辑结构以何种方式存储到物理空间称为数据的存储结构,数据的逻辑结构和存储结构统称为数据结构。 为了更好地理解数据结构,下面我们来看几个例子。 图 1-1学生信息表 图 1-2贷款申请辅助决策树模型 以图1-2贷款申请辅助决策树模型为例,决 算法 郎哥 2024-05-31 969 热度 0评论