算法
mans-men
这个作者很懒,什么都没留下…
展开
-
合并排序的思想与实现
合并排序算法是用分治策略实现对N个元素进行排序的算法。基本思起是 : 将待排序元素分成大小大致相周的两个子集合,分别对两个子集合进行排序,最终将排好序的子集合合并成所要求的排好序的集合。大致过程如下图所示: 该算法的复杂度是 O(nlogn).而最基础的冒泡和选择排序算法复杂度是O(n^2). 该算法有递归和非递归两种实现:递归实现:原创 2017-04-02 09:09:14 · 2782 阅读 · 0 评论 -
一个笔试题,射击靶子最高得分问题
有一排靶子,靶子上有不同的得分,亦枪手射击靶子,集中某个靶子则得到相应的得分,但是没集中一个靶子都会破坏掉它两侧的两个靶子(如果有的话),求这个枪手能够得到的最高分:输入 : 第一行 整数n, 第二行 n 个整数表示 每个八字的分数(分数最少为1)输出 该枪手的最高得分:解题思想: 枪手每击中一个靶子在得分的时候,还会破坏两个靶子,在得到该靶子分数原创 2017-09-30 16:51:02 · 1882 阅读 · 0 评论 -
17年微软笔试题
#include #include #include #include #include #include using namespace std;/** 儿子在父亲后面跟父亲一起跑步* 父亲的起点在x,儿子的起点在y* 父亲速度为每步x米* 父亲总共跑了 n steps* 求儿子的跑步速度(m/step)* 使得儿子在跑步过程中与父亲重合的* 步子是最多的* 儿子原创 2017-10-18 21:55:01 · 639 阅读 · 0 评论 -
17 商汤笔试2
/** 题目描述: 求最长递增序列* 输入 :n 和n个整数* 输出 : 整数n 代表最长递增序列* sample input : 3 1 6 5 * sample output : 2 * 思路: 对序列每一位置维护一个变量* 表示当前位置最长序列长度,则每当多一个* 数字的时候,该位置最长递增序列,可以由* 前面的小于该数的拥有最长递增序列的递增* 序列长度加一获得**/原创 2017-10-18 21:33:30 · 910 阅读 · 1 评论 -
17 年头条笔试
#include #include #include #include #include #include using namespace std;/** 题目描述: 总共有n个房间,现有一房间需要重新安排* 安排方式如下: 假设i号房间需要重新安排,先让该房间人全部出来,* 再按照i+1,i+2……依次安排,每次往里安排一人,到n-1号房间后从0重新循环。* 输入 :房间原创 2017-10-18 21:09:55 · 310 阅读 · 0 评论 -
17年商汤笔试题
#include #include #include #include #include #include using namespace std;/** 编码规则是a-z 对应1-26* 输入一个字符串* 输出可能的解码方案* sample input 12* sample output 2* note : a(1)b(2) or l(12)* explan原创 2017-10-17 21:25:54 · 1406 阅读 · 0 评论 -
KMP 算法的实现过程讲解,图解加算法说明
KMP 算法的简单理解原创 2017-03-29 15:59:08 · 1692 阅读 · 0 评论 -
从序列里条N个数,使其和等于M
/*问题描述: 从一个序列里面取N个数,使N个数的和为M ,找出这样的序列*/#include using namespace std;int cnt = 2;int target = 9;int count = 0;int tmp = target;void getSubset(int list[],bool v[],int a,int b,int sum){ if(cou原创 2017-07-02 12:47:38 · 838 阅读 · 0 评论 -
组合问题的算法实现
/*问题描述:对于一组各不相同的数字,从中任意抽取1-n个数字,构成一个新的集合。求出所有的可能的集合。例如,对于集合{1,2,3},其所有子集为{1},{2},{3},{1,2},{1,3},{2,3}{1,2,3}, 给定一个数组(元素各不相同),求出数组的元素的所有非空组合(即数组的所有非空子集)解法:位向量法。用一个辅助数组表示各个元素的状态。1表示在集合中,0表示不在数组中。递归原创 2017-07-02 11:18:45 · 890 阅读 · 0 评论 -
全排列问题算法实现--递归
/* 设R={r1,r2,...rn}是要进行排列的n个元素.Ri=R-{ri}.集合X中元素的全排列记为 Perm(X).(ri)Perm(X)表示在全排列Perm(X)的每一个排列前加上前缀ri得到的排列 R的全排列可归纳定义如下: 当n=1时,Perm(R)=(r),其中r是集合R中唯一的元素; 当r>1时,Perm(R)由(原创 2017-07-02 10:45:37 · 739 阅读 · 0 评论 -
python socket通信的小例子和几点反思
服务器端的代码非常简单,收到客户端连接建立后发送一个简单的http 报文# 导入 socket、sys 模块import socketimport sys# 创建 socket 对象serversocket = socket.socket( socket.AF_INET, socket.SOCK_STREAM) port = 80serversocket.原创 2017-04-21 17:07:37 · 411 阅读 · 0 评论 -
动态规划之矩阵连乘问题
动态规划求解矩阵连乘问题原创 2017-04-14 19:51:56 · 3858 阅读 · 2 评论 -
使用STL模板必须重载的运算符
STL各种容器和算法的sort和find函数对重载运算符的调用情况:1) 二叉树类型的容器的sort和find都会调用operator 2)线性类型容器sort会调用operator 需要非常注意重载原创 2017-04-30 22:38:53 · 1036 阅读 · 0 评论 -
标准二维表问题,catalan数的应用
catalan数解决标标二维表问题原创 2017-04-12 21:18:25 · 1276 阅读 · 0 评论 -
快速排序算法的思想和几种实现方式
快速排序算法是基于分治策略的另一个排序算法。该方法的基本思想是:1.先从数列中取出一个数作为基准数,记为x。2.分区过程,将不小于x的数全放到它的右边,不大于x的数全放到它的左边。(这样key的位置左边的没有大于key的,右边的没有小于key的,只需对左右区间排序即可)3.再对左右区间重复第二步,直到各区间只有一个数快排目前有两类实现算法,第一种是标准算法,第二种是两头原创 2017-04-12 08:43:39 · 20060 阅读 · 2 评论 -
堆排序代码
class HeapSort{ public: static void adjustHeap(vector<int> &vec, int pos, int len) { auto tmp = vec[pos];//先取出当前元素i f...原创 2018-08-16 18:31:09 · 340 阅读 · 0 评论