
算法
monaso
不定期分享UE4游戏开发干货,读书笔记,学习经验。可关注微信公众号:微浪游戏,每天第一时间在微信公众号更新。
展开
-
把二元查找树转变成排序的双向链表
【练习】把二元查找树转变成排序的双向链表题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点,只调整指针的指向。10/ \6 14/ \ / \4 8 12 16转换成双向链表4=6=8=10=12=14=16。首先我们定义的二元查找树节点的数据结构如下:struct BSTreeNode{int m转载 2015-06-15 18:52:17 · 374 阅读 · 0 评论 -
三角形 算法第一集
本文章是我自学《挑战程序设计竞赛》的心得和体会,本文章是我自学《挑战程序设计竞赛》的心得和体会,以后每天尽量写一个算法题练练手,希望大家有时间的可以一起来讨论! 题目如下:有n个根子,棍子 i 的长度为 ai,想要从中选取3根棍子组成周长尽可能长的三角形,请输出最大的周长,若无法组成三角形则输出0。原创 2015-10-19 19:15:27 · 446 阅读 · 0 评论 -
蚂蚁 算法之第二集
这是一个有趣的问题,题意不太容易理解,刚开始我就理解错了题意,原题如下:n只蚂蚁以每秒1cm的速度在长度为Lcm的杆子上爬行,当蚂蚁爬到杆子的端点是就会掉落,由于杆子太细,每只蚂蚁相遇时,他们不能交错通过,只能各自反向爬回去,对于每只蚂蚁,我们知道它距离杆子左端的距离为xi,但不知道它当前的朝向,请计算所有蚂蚁落下杆子所需要的最短时间和最长时间。限制条件:1=1=0=结题思原创 2015-10-23 14:59:53 · 709 阅读 · 0 评论 -
部分和问题 算法第三集
有人说会用递归的都是大神,这就是一个关于递归的问题,原题如下:给定整数a1,a2,.....an,判定是否可以从中选出若干数,使它们的和恰好为k。限制条件:1=-10^8=-10^8=例如:输入n=4,a={1,2,4,7}, k= 13输出:Yes(13=2+4+7)具体代码如下:#include using namespace std;#define M原创 2015-10-26 20:16:03 · 499 阅读 · 0 评论 -
Lake Counting 算法 第四集
本题还是一个关于深度优先搜索和递归的算法题,原题如下:有一个大小为N*M的园子,雨后积起了水,八连通被认为是连接在一起的,请求出园子里总共有多少洼?(八连通指的是下图中相对W的*的部分)* * ** w ** * *限制条件:N,M 本题的代码实现如下:#include "stdafx.h"#include #include #define MAX_N 100原创 2015-11-02 20:06:26 · 470 阅读 · 0 评论 -
硬币问题 算法第五集
贪心算法的原则就是遵循某种规则,不断贪心地选取当前最优策略的算法设计方法。本题是一个关于贪心算法的问题,原题如下: 有1元,5元,10元,50元,100元,500元的硬币各C1,C5, C10 ,C50, C100, C500枚,现在要用这些硬币来支付A元,最少需要多少枚硬币?假设本题最少存在一种支付方案。限制条件:0= 解析:本题非常接近生活,相信每个人都能想到尽可能的都原创 2015-11-26 16:31:57 · 921 阅读 · 0 评论 -
区间调度问题 算法第六集
今天还是贪心算法,但比昨天难一点,原题如下: 有n项工作,每项工作分别在si时间开始,在ti时间结束,对于每项工作,你都可以选择参加与否,如果选择参加了,那么自始至终都必须全程参与,此外,参加工作的时间段不能重叠(即使是开始的瞬间和结束的瞬间重叠也不允许),你的目标是参与尽可能多的工作,那么最多能参与多少项工作呢?本题的关键是:在可选的工作中,每次都选取结束时间最早的工作。具体代码实原创 2015-11-27 17:06:31 · 654 阅读 · 0 评论