算法
qq_40432881
这个作者很懒,什么都没留下…
展开
-
约瑟夫环的两种解法
n个人想玩残酷的死亡游戏,游戏规则如下: n个人进行编号,分别从1到n,排成一个圈,顺时针从1开始数到m,数到m的人被杀,剩下的人继续游戏,活到最后的一个人是胜利者。 请输出最后一个人的编号。 Input 输入n和m值。m>1。 Output 输出胜利者的编号。 Sample Input 5 3 Sample Output 4 Hint 第一轮:3被杀第二轮:1被杀第三轮:5被杀第四轮:2被...原创 2018-10-04 16:03:23 · 261 阅读 · 0 评论 -
利用栈来处理大数加法
大数加法问题 用栈来模拟 因为两个数串由高位到低位输入,由低位到高位计算,最后由高位到低位输出,故选择用栈模拟 #include <iostream> #include <cstring> #define MAXSIZE 200 using namespace std; //使用名称空间std typedef struct { int* to原创 2018-10-05 17:13:30 · 478 阅读 · 0 评论 -
用数组模拟链式结构
在实际程序设计过程在,手撸链表及单链表的单向遍历和双链表的复杂操作带来很多不便。其实,为了模仿链式结构可用两个数组代替,及前驱数组pre和后继数组next。这种方法方便了我们对于链式结构的建立与处理,但其不足之处在于占用了较多的空间,有较高的空间复杂度,且其只是单纯的逻辑模拟,只支持删除操作,不支持插入操作,即使如此,其作为逻辑跳转表也是可取的,下面以一道简单题为例: #include <...原创 2018-09-28 00:30:10 · 574 阅读 · 0 评论 -
KMP算法的理解
具体理解细节参考 转载:https://blog.csdn.net/starstar1992/article/details/54913261 说明 KMP算法看懂了觉得特别简单,思路很简单,看不懂之前,查各种资料,看的稀里糊涂,即使网上最简单的解释,依然看的稀里糊涂。 我花了半天时间,争取用最短的篇幅大致搞明白这玩意到底是啥。 这里不扯概念,只讲算法过程和代码理解: KMP算法求解什么类型问题 ...转载 2018-10-09 11:41:56 · 176 阅读 · 0 评论 -
排序专题之冒泡排序
冒泡排序原理 (1)将整个待排序的记录序列划分成有序区和无序区。初始状态有序区为空,无序区 包括所有待排序的记录。 (2)对无序区从前向后依次将相邻记录的关键字进行比较,若逆序则将其交换,从而 使得关键字值小的记录向上“飘”(左移),关键字值大的记录向下“沉”(右移)。 每经过一趟冒泡排序,都使无序区中关键字值大的记录进入有序区,对于由 n 个记录组 成的记录序列,多经过 n-1 趟冒泡排序,就...原创 2018-10-10 19:43:18 · 580 阅读 · 0 评论 -
排序专题之归并排序
基本原理 归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把 待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有 序序列。归并排序的平均时间复杂度 O(NlogN)。 归并操作(merge),也叫归并算法,指的是将两个已经排序的序列合并成一个序列的操 作。 如:设有数列{6,202,100,301,38,8,1} 初始状态: [6] [20...原创 2018-10-10 21:41:01 · 196 阅读 · 0 评论 -
多叉树/图结构维护问题转线性结构——dfs序
dfs——深度优先遍历搜索 存储结构:链式向前星 下面是我看到的一篇很好的链式向前星讲解文章: 深度理解链式向前星 转载出处: https://blog.csdn.net/ACdreamers/article/details/16902023 链式向前星的逻辑结构如下 dfs的运行代码 //建立边结构体 struct edge { int To; //第i条边的...原创 2018-10-27 11:01:14 · 312 阅读 · 0 评论 -
二分查找
二分查找 //二分法的标准写法 while (L <= R) { if () L = mid; else R = mid; } 因为a/b是向下取整,所以while(L<R)为二分判断标准时,循环会跳不出,因为当R=L+1时,mid=(L+R)/2=L,会变成死循环。 题目 修路HRBUST-1039 解题分析:二分求解,分析时间的范围 最大时间:整条路由一个队来...原创 2018-11-09 17:20:50 · 111 阅读 · 0 评论