随笔分类 - [01]Algorithms
1
算法是计算机科学永恒的主题,而数学是一门重要而应用广泛的学科,被誉为锻炼思维的体操和人类智慧之冠上最明亮的宝石!
摘要:统计一个字符串中第一次出现且频率最高的字符。 :)
阅读全文
摘要:以下答案纯属个人愚见,作为IT新手,算法代码中难免有逻辑漏洞和其他不足之处,欢迎朋友你点评拍砖,交流争辩能极大开阔思维,愿一起加油进步!^_^ 1.1.19 在计算机上运行以下程序: 计算机用这段程序在一个小时之内能够得到F(N) 结果的最大N 值是多少?开发F(N) 的一 个更好的实现,用数组保存
阅读全文
摘要:在《Core JAVA》中有个随机生成六位不重复数值的算法,大二用过一次,今天在写《Algorithms》的练习题遇到类似的问题,特贴出! 1 // 随机生成六位不重复的数字 2 private static int generate6BitInt() { 3 int[] arr = {0,...
阅读全文
摘要:Random初始化的时候,可以以一个INT32作为参数,称为seed,MSDN上的解释是:“伪随机数是以相同的概率从一组有限的数字中选取的......随机数的生成是从种子值开始......” 所有标准库提供的Random函数其实都是假Random,提供的随机数也是伪随机数,真正的Random函...
阅读全文
摘要:~当k=0时,我们关注的是邻接矩阵的第0行和第0列,即顶点0的入边和出边;考察矩阵中其他元素,如果元素D[i][j]向第0行和第0列的投影D[0][j]和D[i][0]都有值,就说明原图中从 i 到 j 存在一条经过顶点0的有向路径 i -> 0 -> j,这样的路径包含的边数不会超过2,如果其权值...
阅读全文
摘要:关键词:代数、图论、矩阵、松弛技术、动态规划 Floyd算法是一个经典的动态规划算法。用通俗的语言来描述的话,首先我们的目标是寻找从点i到点j的最短路径。从动态规划的角度看问题,我们需要为这个目标重新做一个诠释(这个诠释正是动态规划最富创造力的精华所在),floyd算法加入了这个概念 Ak(...
阅读全文
摘要:正如我们所知道的,Floyd算法用于求最短路径。Floyd算法可以说是Warshall算法的扩展,三个for循环就可以解决问题,所以它的时间复杂度为O(n^3)。 Floyd算法的基本思想如下:从任意节点A到任意节点B的最短路径不外乎2种可能,1是直接从A到B,2是从A经过若干个节点X到B。所...
阅读全文
摘要:倘若我们要在计算机上建立一个交通咨询系统则可以采用图的结构来表示实际的交通网络。其实现最基本的功能,求出任意两点间的最短路径,求最短路径的经典方法有很多种,最常用的便是迪杰斯特拉算法和佛洛依德(Floyd)算法,这篇文章就着重介绍Floyd算法。求两点之间的最短路径无外乎有两种情况,一种就是从一点直...
阅读全文
摘要:摘自网络,对于这个训练计划,我只能膜拜,~第一阶段:练经典常用算法,下面的每个算法给我打上十到二十遍,同时自己精简代码,因为太常用,所以要练到写时不用想,10-15 分钟内打完,甚至关掉显示器都可以把程序打出来.1.最短路(Floyd、Dijstra,BellmanFord)2. 最小生成树(先写个...
阅读全文
摘要:1、图的抽象数据类型 1 ADT Graph 2 { 3 数据: 4 Graph = (Vertex, Edge)是可以用不同方式存储的图,Vertex是顶点集, 5 Edge = { <vtx_1, vtx_2> | vtx_1, vtx_2属于Vertex, vtx_1不等于vtx_2, <vt
阅读全文
摘要:最小堆的类声明: 数据节点定义: 基本操作: OK哒!O(∩_∩)O哈哈~
阅读全文
摘要:在后序线索二叉树中查找结点*p的后继:1、若结点*p为根,则无后继;2、若结点*p为其双亲的右孩子,则其后继为其双亲;3、若结点*p为其双亲的左孩子,且双亲无右子女,则其后继为其双亲;4、若结点*p为其双亲的左孩子,且双亲有右子女,则结点*p的后继是其双亲的右子树中按后序遍历的第一个结点。
阅读全文
摘要:数据定义: 1 /* 2 * 枚举类型定义 NO -> 没有线索化 YES -> 线索化了的 3 */ 4 enum Thread { NO, YES } 5 6 /* 7 * 线索二叉树的结点类型定义 8 */ 9 struct Node10 {11 Element...
阅读全文
摘要:-----经典回溯问题问题:某售货员要到若干城市去推销商品,已知各城市之间的路程(旅费),他要选定一条从驻地出发,经过每个城市一遍,最后回到驻地的路线,使总的路程(总旅费)最小。 以上图为例:售货员要从1开始经过2,3,4又返回1。 给我的感觉就...
阅读全文
摘要:树结点的定义:1 struct TreeNode2 {3 ElementType data; // 树结点的数据元素域4 struct TreeNode *subtree[TREEDEGREE]; // TREEDEGREE为已知的树的...
阅读全文
摘要:结点类型定义: 1 /* 2 * 结点类型 3 */ 4 enum NodeType { head, atom, sublist }; 5 6 /* 7 * 定义广义表的结点结构(注意union的使用) 8 */ 9 struct Node10 {11 Boolean flag;...
阅读全文
摘要:结点定义:1 /*2 * Huffman树结点定义3 */4 struct Node5 {6 ElementType weight; // 结点的权值7 struct Node *leftChild; // 结点的左指针8 struct Node ...
阅读全文
摘要:以下是二叉搜索树中查找、插入、删除的递归和非递归算法数据类型设计:1 struct BSTNode 2 {3 ElementType data; // 结点元素值4 struct Node *leftChild; // 左子树根结点5 ...
阅读全文
摘要:数据表示:1 //二叉链表存储 2 struct BTNode3 {4 struct BTNode *LChild; // 指向左孩子指针5 ELEMENTTYPE data; // 结点数据6 struct BTNode *RChild; // ...
阅读全文
摘要:1 /** 2 * 循环链表求解约瑟夫环问题 3 **/ 4 #include 5 #include 6 using namespace std; 7 8 /** 9 * 数据结构10 **/11 typedef struct DanamicList {12 int id;1...
阅读全文
1