自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 独立任务最优调度(动态规划)

题目:用两台处理机A和B处理n个作业。设A和B处理第k个作业的时间分别为ak和bk。由于各个作业的特点和机器性能的关系,对某些作业,在A上的处理时间长;而对另一些作业,在B上的处理时间更长。一台处理机在某个时刻只能处理一个作业,而且作业处理是不可中断的,每个作业只能被处理一次。现在要找出一个最优调度方案,使得n个作业被这两台处理机处理完毕的时间和最少。算法思路:当完成k个作业时,设

2018-01-28 20:11:31 2447 6

原创 0--1背包问题(动态规划)

1、问题描述:     给定n种物品和一背包。物品i的重量是wi,其价值为vi,背包的容量为C。问:应如何选择装入背包的物品,使得装入背包中物品的总价值最大?例子:数据:物品个数n=5,物品重量w[n]={0,2,2,6,5,4},物品价值V[n]={0,6,3,5,4,6}下面是算法分析的过程:      其实这里就是选择装与不装的问题关键  (1)对于m[5][j],当j=

2018-01-24 18:06:54 1008 1

原创 流水作业调度(动态规划)

题目:   n个作业{1,2,…,n}要在由2台机器M1和M2组成的流水线上完成加工。每个作业加工的顺序都是先在M1上加工,然后在M2上加工。M1和M2加工作业i所需的时间分别为ai和bi例如这个例子:所以最有时间就为:a4+a0+a2+a1+a3+[(b4+b0+b1+b2)-(a0+a1+a2+a3)]+b3     =1+2+3+4+6+[(7+5+2+3)-

2018-01-24 15:09:49 4180

原创 凸多边形最优三角剖分(动态规划)

题目描述:用多边形顶点的逆时针序列表示凸多边形,即P={v0,v1,…,vn-1}表示具有n条边的凸多边形。     给定凸多边形P,以及定义在由多边形的边和弦组成的三角形上的权函数w。要求确定该凸多边形的三角剖分,使得即该三角剖分中诸三角形上权之和为最小。解题思路:  若凸(n+1)边形P={v0,v1,…,vn-1}的最优三角剖分T包含三角形v0vkvn

2018-01-20 17:32:48 3029

原创 最大子矩阵问题(动态规划的推广)

问题描述:已知矩阵的大小定义为矩阵中所有元素的和。给定一个矩阵,找到最大的非空(大小至少是1 * 1)子矩阵。比如,如下4 * 4的矩阵0 -2 -7 09 2 -6 2-4 1 -4 1-1 8 0 -2的最大子矩阵是9 2-4 1-1 8那么最大子矩阵的和就为:15算法思路就是:从大矩阵里找一个小矩阵,这个小矩阵的所有数之和最大;1,先从第一行开始扫描,然后再是1,2行,再1,2,3行,最后1

2018-01-19 14:59:27 353

原创 最大子段和问题(这里给出三种算法)

问题描述对于给定序列a1,a2,a3……an,寻找它的某个连续子段,使得其和最大。如( -2,11,-4,13,-5,-2 )最大子段是{ 11,-4,13 }其和为20。     (1)枚举法求解     枚举法思路如下:     以a[0]开始: {a[0]}, {a[0],a[1]},{a[0],a[1],a[2]}……{a[0],a[1],……a[n]}共n个     以a[1]开始: {

2018-01-18 20:36:34 932

原创 最长公共子序列

问题的描述:一个给定序列的子序列是在该序列中删去若干元素后得到的序列。若给定序列X= { x1, x2,…, xm},则另一序列Z= {z1, z2,…, zk}是X的子序列是指存在一个严格递增的下标序列 {i1, i2,…, ik},使得对于所有j=1,2,…,k有 Xij=Zj。例如,序列Z={B,C,D,B}是序列X={A,B,C,B,D,A,B}的子序列,相应的递增下标序列为{2,3,5,

2018-01-17 22:48:10 207

原创 矩阵连乘(动态规划)

题目:例:设要计算矩阵连乘乘积A1A2A3A4A5A6,其中各矩阵的维数分别是:   A1          A2                    A3                A4          A5             A630*35;      35*15;     15*5;     5*10;     10*20;    20*25

2018-01-16 23:22:32 604

原创 整数因子分解

题目:大于1的正整数 n 都可以分解为 n = x1 * x2 * ... * xm例如:当n=12时,共有8种不同的分解式:12 = 1212 = 6*212 = 4*312 = 3*412 = 3*2*212 = 2*612 = 2*3*212 = 2*2*3对于给定正整数n,计算n共有多少种不同的分解式。#include using namespace

2018-01-15 23:15:19 279

原创 标准二表问题(Catalan实现)

问题描述:设n 是一个正整数。2xn的标准2维表是由正整数1,2,…,2n 组成的2xn 数组,该数组的每行从左到右递增,每列从上到下递增。2xn的标准2维表全体记为Tab(n)。算法:直接利用Catalan原理:令h(0)=1,h(1)=1,catalan数满足递推式:h(n)= h(0)*h(n-1)+h(1)*h(n-2) + ... + h(n-

2018-01-15 20:34:19 593

原创 双色汉诺塔

题目:设A、B、C是3 个塔座。开始时,在塔座A 上有一叠共n 个圆盘,这些圆盘自下而上,由大到小地叠在一起。各圆盘从小到大编号为1,2,……,n,奇数号圆盘着蓝色,偶数号圆盘着红色,如图所示。现要求将塔座A 上的这一叠圆盘移到塔座B 上,并仍按同样顺序叠置。在移动圆盘时应遵守以下移动规则:规则(1):每次只能移动1 个圆盘;规则(2):任何时刻都不允许将较大的圆盘压在较小的圆盘之

2018-01-15 19:17:08 1021

原创 集合划分问题(2)

题目:n个元素的集合{1,2,..., n }可以划分为若干个非空子集。例如,当n=4 时,集合{1,2,3,4}可以划分为15 个不同的非空子集如下:{{1},{2},{3},{4}},{{1,2},{3},{4}},{{1,3},{2},{4}},{{1,4},{2},{3}},{{2,3},{1},{4}},{{2,4},{1},{3}},{{3,4},{

2018-01-15 16:52:46 1358

原创 集合划分(1)递归实现

题目:n个元素的集合{1,2,.,n }可以划分为若干个非空子集。例如,当n=4 时,集合{1,2,3,4}可以划分为15个不同的非空子集如下: {1},{2},{3},{4}}, {{1,2},{3},{4}}, {{1,3},{2},{4}}, {{1,4},{2},{3}}, {{2,3},{1},{4}}, {{2,4},{1},{3}}, {{3,4},{1},{2}

2018-01-15 16:12:39 614 1

原创 排列的字典序问题

问题描述:n个元素{1,2,,......,n}有n!个不同的排列。将这n!个排列按字典序排列,并编号为0,1,......,n!-1。每个排列的编号为其字典序值。例如,当n=3时,6个不同的排列的字典序值如下:例如:输入:82 6 4 5 8 1 7 3输出:82272 6 4 5 8 3 1 7代码我已经给出了详细的注释,注释就是思路了,所以在这里我

2018-01-14 22:46:44 515

原创 递归分治法实现有重复元素的排列问题

书上例题:1.问题描述        设集合R={r1,r2,...,rn}是要进行排列的n个元素,其中r1,r2,...,rn可能相同。 试着设计一个算法,列出R的所有不同排列。 即,给定n以及待排的n个可能重复的元素。计算输出n个元素的所有不同排列。2.算法设计        给定n及待排列的n个元素,计算出这n个元素的所有不同排列。3.数据输入        第1

2018-01-14 16:21:34 5203

原创 分治法实现半数单集问题

问题描述:给定一个自然数n,由n开始可以依次产生半数集set(n)中的数如下:    (1)set(n)中包含n;    (2)在n的左边加上一个自然数,但该自然数不能超过最近添加的数的一半;    (3)按此规则进行处理,直至不能添加自然数为止。    例如,set(6)={6,16,26,126,36,136}。    编程任务:对于给定的自然数n,编程计算半数集set(n

2018-01-13 19:59:13 1707

原创 半数集问题

定义: 给定一个自然数n,由n开始可以依次产生半数集set(n)中的数如下:(1) 在n的左边加上一个自然数,但该自然数不能超过最近添加的数的一半;(2)按此规则进行处理,直到不能再添加自然数为止。例题:以6为例,set(6)={6,16,26,36,126,136}.同法可得8的半数集set(8)={8,18,28,38,48,128,138,148,248,1248

2018-01-13 19:08:02 290

原创 分治法实现众数问题--例如:S={1,2,2,2,3,5},则多重集S的众数是2,其重数为3。对于给定的由m个自然数组成的多重集S,计算出S的众数及其重数。

题目的描述:例如:S={1,2,2,2,3,5},则多重集S的众数是2,其重数为3。对于给定的由m个自然数组成的多重集S,计算出S的众数及其重数。众数------一组元素中出现的次数是最多的重数-------这个数出现的总次数算法的分析:1.采用分治法:(1)先找到这一组的中位数,然后找到该数的左界限和右界限(2)上面那一

2018-01-13 14:23:04 3353

原创 分治法实现循环日程

设有n=2^k个运动员要进行网球循环赛。现要设计一个满足以下要求的比赛日程表:          (1)每个选手必须与其他n-1个选手各赛一次;     (2)每个选手一天只能参赛一次;     (3)循环赛在n-1天内结束。以书上例题为例:下面给出解决思路 (1)for(int i=1;i(2)将第一部分根据第一行来填充第二行 (3)将第二部分根据第一行和

2018-01-12 19:24:34 351

原创 利用分治算法实现合并排序的详细思路

//@1--将数组a先一分为2//@2--将数组两两进行判断并在数组a比较之后的最小元素放进d数组中//@3--当两组比较完后,进行条件判断//@4--当剩下的是左边时,则说明是右边的开始界限已经超出了范围,则进行循环将剩下的数组直接copy到d数组//@5--当剩下的是右边时,则说明是左边的开始界限已经超出了范围,则进行循环将剩下的数组直接copy到d数组上面是解释了Merg

2018-01-11 19:12:47 1328

原创 利用二分收索查找该数在该数组所在的位置,前提是要保证改数组是有序的

//2d3 二分搜索技术#include #includeusing namespace std;templateint BinarySearch(Type a[],const Type& x,int n){    int left = 0;///最左边,也就是最开始的时候    int right = n-1;///最右边的界限    while(left

2018-01-10 19:06:38 257

原创 整数划分(递归法),这个程序是实现输出整数的划分有多少种方法,接下来第二篇会实现级能输出划分整数的因子和输出划分的种个数方法

#include#include#includeusing namespace std;///5.种情况/*@1.当n=1时,q(1,m)=1@2.当m=1时,q(n,1)=1@3.当m=n时,q(n,m)=1+q(n,n-1);@4.当m<n时,q(n,m)=q(n,m-1)+q(n-m,m);@5.当m>n时,q(n,m)=q(n,n)*/int

2018-01-10 16:20:09 348

原创 书上算法排列问题

思想:排列问题最主要是Perm()函数,例如一个很简单的例子如下:数列是:1 2 3当n=1时,则递归出口,换种说法就是当n=m时,也就是数列中只剩下一个数的时候,则表示交换已经结束,此时需要把这一排打印出来。当n<m时,说明没有交换结束,则继续交换下去,但是需要注意的是,当每次我交换完之后,也是就递归结束时,我需要把数列还原为原来的数列,不然,在进行交换输出后会得不到全部,而且还会有

2018-01-05 16:42:57 646

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除