算法笔试题
文章平均质量分 70
Harold_Finch
这个作者很懒,什么都没留下…
展开
-
字符串的排列
题目:输入一个字符串,打印出该字符串中字符的所有排列。 例:输入字符串 abc 输出:abc acb bac bca cab cba 思路:把一个字符串分为两部分,第一部分为其第一个字符,第二部分为后面所有字符。然后把第一个字符逐一和它后面的字符交换。递归思路。 #include using namespace std; #include void原创 2017-08-31 11:32:48 · 190 阅读 · 0 评论 -
排列问题
题目】设计一个递归算法生成n个元素{r1,r2,…,rn}的全排列。 【算法讲解】 设R={r1,r2,…,rn}是要进行排列的n个元素,Ri=R-{ri}。 集合X中元素的全排列记为perm(X)。 (ri)perm(X)表示在全排列perm(X)的每一个排列前加上前缀得到的排列。 R的全排列可归纳定义如下: 当n=1时,perm(R)=(r),其中r是集合R中唯一的元素; 当n转载 2017-09-03 09:16:18 · 523 阅读 · 0 评论 -
整数划分问题
为求不同的划分,则将划分的元素按照从大到小排序(全局序约束去除了对称性带来的重复) 设n的最大加数 1、q(n,1)=1 2、q(n,m)=q(n,n),m>n 3、q(n,n)=q(n,n-1)+1 4、q(n,m)=q(n,m-1)+q(n-m,m) 对于4的解释: a。划分中包含m的情况,即{m,{x1,x2,...,xi}},其中{x1,x2,...,xi}和为n-m,因此在原创 2017-09-03 09:37:05 · 225 阅读 · 0 评论 -
二分搜索(vector动态输入)
二分搜缩简单,注意vector动态输入#include #include using namespace std; int BinarySearch(vector&a,int x) { if (a.size() == 0) return -1; int len = a.size(); int left = 0; int right = len - 1; while (left <=原创 2017-09-03 10:36:45 · 365 阅读 · 0 评论 -
流水作业调度(动态规划)
【问题描述】 n个作业{0,1,2,...n}在2台机器M1和M2组成的流水线上完成加工。每个作业加工的顺序都是现在M1上加工,后在M2上加工,在两台机器上加工的时间分别为ai和bi。 【目标】 确定这n个作业的加工顺序,使得从第一台作业开始加工,到最后一个作业完成加工所需时间最少。 【算法描述】 流水作业调度问题的Johnson法则 (1)令 (2)将N1中作业依 t[i,1]的非转载 2017-09-03 14:14:03 · 1250 阅读 · 0 评论