算法笔试题
文章平均质量分 70
Harold_Finch
这个作者很懒,什么都没留下…
展开
-
字符串的排列
题目:输入一个字符串,打印出该字符串中字符的所有排列。例:输入字符串 abc 输出:abc acb bac bca cab cba思路:把一个字符串分为两部分,第一部分为其第一个字符,第二部分为后面所有字符。然后把第一个字符逐一和它后面的字符交换。递归思路。#includeusing namespace std;#includevoid原创 2017-08-31 11:32:48 · 174 阅读 · 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 · 488 阅读 · 0 评论 -
整数划分问题
为求不同的划分,则将划分的元素按照从大到小排序(全局序约束去除了对称性带来的重复)设n的最大加数1、q(n,1)=12、q(n,m)=q(n,n),m>n3、q(n,n)=q(n,n-1)+14、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 · 205 阅读 · 0 评论 -
二分搜索(vector动态输入)
二分搜缩简单,注意vector动态输入#include#includeusing 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 · 330 阅读 · 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 · 1221 阅读 · 0 评论