数据结构与算法
半道道
26 岁,重新开始!
展开
-
baby-gin 算法
BabyGin 算法随机取6张牌,牌上的数字为 0 ~ 9,可以重复,组成 baby-gin算法的条件:1个run + 1 个trip或者2个run或者2个trip 类型 一种组合为 run(1,2,3),三张牌为顺子,另一种为trip(1,1,1),三张牌相同。原创 2017-07-11 21:35:06 · 979 阅读 · 0 评论 -
算法-循环链表[约瑟夫问题]
链表属于线性表的一种,数据逻辑内存相邻,物理内存不相邻。常见链表有:单向链表,双向链表,循环链表。原创 2017-11-19 21:31:29 · 401 阅读 · 1 评论 -
bfs 数组模拟栈的使用
bfs 数组模拟栈原创 2017-08-06 15:50:05 · 353 阅读 · 0 评论 -
三维迷宫 - 算法
static void bfs(int p_x,int p_y,int p_z,int count){ boolean flag = false; int new_x,new_y,new_z; for(int i = 0;i < 6;i++){ new_x = p_x + dir[i][0][0]; ne原创 2017-07-27 23:17:20 · 1371 阅读 · 0 评论 -
最后接电话的人 - 算法
如图所示是一个联系人网络,圆圈上面的标号代表人的标号,箭头方向表示前节点可以给后节点打电话,起点为2(例如:2可以给7和15打电话。注意在打电话的时候2是需要同时给7和15打电话。然后,7给1打电话,同时,1给4打电话。) 问题:求打电话步数最多并且人物编号最大的人的编号?原创 2017-07-25 22:46:27 · 325 阅读 · 1 评论 -
棋盘反转 - 算法
poj 2965,棋盘反转翻译 2017-08-08 22:17:10 · 1160 阅读 · 0 评论 -
二进制压缩 - 算法
在编程时遇到每个数据只有两种状态,且 dfs 或者 bfs 时遍历时间复杂度高时,可以采用二进制压缩数据,尤其是二维数组。原创 2017-08-08 22:06:35 · 14453 阅读 · 0 评论 -
路径最优问题 - 算法
有一个 n * n 的矩阵,其中有四个2代表研究院,矩阵中 0 表示道路,1 表示不能走,只可以四个方向走,求找到一点(0点)距离四个研究院中最远的研究院的距离最近。原创 2017-08-08 21:44:55 · 1509 阅读 · 0 评论 -
贪心算法(上)
一、问题描述 有15个公司和30种产品。 每个公司生产不同种类任意多种产品,每个公司生成产品都会产生一定的费用。 例如:需要生产6种产品,分别为 1 5 9 10 11 126 1 5 9 10 11 12共有7个公司生产7第一家:需要15万,生成5种产品,1 3 5 7 915 5 1 3 5 7 9第二家...12 6 2 3 4 6 7 8第三家...7 5 3 4 5原创 2017-07-23 23:12:40 · 267 阅读 · 0 评论 -
钓鱼 - 算法(暂存)
钓鱼题 总共N个座位,三个门,每个门后面有M个人。进入的规则:门的顺序可以变,但是每个门打开后,门后的人必须全部进去才能开下一个门。每个人只能坐在离他最近的座位上,求人全部进入所走的最小步数5 –test case 10 –总共的座位数 4 5 – 第一个门的位置是4,有5个人 6 2 – 第二个门的位置是6,有2个人 10 2 – 地三个门的位置是10,有2个人原创 2017-08-07 23:02:12 · 554 阅读 · 0 评论 -
8 皇帝问题(皇帝还是比较牛逼) - 算法
有一个 8 * 8 的棋盘,和 8 个皇后,皇后的攻击规则:任意一个皇后可以攻击同一行、同一列、正反对角线上的皇后。问题:如何摆放8个皇后,可以让她们互相不攻击。原创 2017-07-18 23:21:30 · 335 阅读 · 0 评论 -
sudoku(数独) - 算法
在 9 * 9 的宫格中,填写的数据为 1-9,每行不能重复,每列也不能重复,组成的9个小宫格中也不能重复。原创 2017-07-30 19:17:19 · 3134 阅读 · 0 评论 -
poj 1562 DFS(深度遍历) - 算法
The GeoSurvComp geologic survey company is responsible for detecting underground oil deposits. GeoSurvComp works with one large rectangular region of land at a time, and creates a gr翻译 2017-07-17 22:55:01 · 316 阅读 · 0 评论 -
选择排序 - 算法
简单来说,选择排序就是每次都从数组中查询出最小的数据,放到数组的最前面,直到最后一个数据被排序完,真个数组就被排序。选择排序有点类似冒泡排序,冒泡排序遍历时,每次都是相邻两个元素进行比较,比较完后,将小的元素排到前面,比较次数比较多。选择排序是每次都全部比较,选择其中最小的元素放到最前面。原创 2017-07-16 20:26:56 · 301 阅读 · 0 评论 -
插入排序-算法
1、插入排序类似玩扑克牌,摸牌的时候,摸到小的牌就和手中的牌比较,如果这张牌大于前面的牌则插入,否则的话继续和前面的牌比较,直到这张牌为第一张获取比前面牌大的时候,再继续摸牌。 2.为何只需要用摸到的这张牌和前面的牌比较? 是因为按照这样的逻辑,前面的牌已经都是排好序的,所以拿到新的牌只需要和比前面牌大即可插入 3.需要移动数组原创 2017-07-13 23:27:10 · 192 阅读 · 0 评论 -
快速排序-算法
快速排序采用分而治之的思想,将问题拆分为更小规模进行递归调用,从而求解大规模问题。即选取一个数组中的一个key(一般选择左边或右边)key,当拆分一次后(low >= right),产生一个标志flag,将数组拆分为 [low,flag-1]和[flag+1,right]。原创 2017-07-13 21:50:19 · 247 阅读 · 0 评论 -
去除相邻相同元素-算法
有一个数组,我们对该数组进行加密,加密原则为 去除相邻相同元素后剩下的元素组成新的数组(注意:在去除一组相邻元素后,本来不相邻相同的元素可能回出现相邻相同的情况,例如:1 2 2 2 3 3 2,加密后的数组为 1)。原创 2017-07-12 22:57:42 · 4404 阅读 · 0 评论 -
算法-循环链表[约瑟夫问题之进阶]
约瑟夫问题:进阶 有 n 个人,初始时按照顺序围成一圈而坐,每个人都有一个密码。 从任意一个人开始,制定报数上线M,当有人报数为M时,该人死亡,从下一个人开始报数,该人报数前指定报数上限M为该人的密码。 至到所有人都死亡结束游戏,输出死亡顺序编号。原创 2017-11-19 23:41:26 · 269 阅读 · 0 评论