自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 yuan

问题圆排列问题:给定n个圆的半径序列,将它们放到矩形框中,各圆与矩形底边相切,求具有最小排列长度的圆排列。解析使用分支界限解决,遍历所有排序情况,通过剪枝减去排列比当下长的序列的情况及其子结点,从求出具有最小排列长度的圆序列。假定给n个圆的半径,那么排列情况共有n!个情况,计算着n种情况的排列长度,比较得出最小值以及圆排列。可以利用回溯法搜索树的框架。要求出最小圆半径排列,相邻两个圆必定相切或者相离。设计#include "stdio.h"#include "math..

2020-06-21 19:34:56 188

原创 《啊哈!算法》读后感

《啊哈!算法》读后感第一眼看到这本书,我就深深感受到了这本书和其他算法书籍的不同之处。在大家的印象里,算法是一种专业性非常强的存在,一说到算法应该就会联想到算法是一系列用于解决问题的清晰指令,是一丝不苟的很严肃的东西。但是,在这本书中,我看到的是活动有趣的故事和非常吸引人的图片,着实让自己产生了浓厚的兴趣。在这些有趣的故事和图片中,自己潜移默化地接受着书本灌输的知识,对于原本看起来枯燥乏味的算法有了全新的理解和认识。最让自己印象深刻的莫过于通过“哨兵”来讲述“快速排序”算法的章节了。该方法的基本

2020-06-21 19:06:55 625

原创 BG12

问题图的m着色问题。给定无向连通图G和m种颜色,用这些颜色给图的顶点着色,每个顶点一种颜色。如果要求G的每条边的两个顶点着不同颜色。给出所有可能的着色方案;如果不存在,则回答“NO”。2.解析与“N皇后问题”一样。在填写每一个顶点的颜色时检查与相邻已填顶点的颜色是否相同。如果不同,则填上;如果相同(冲突),则另选一种;如果已没有颜色可供选择,则回溯到上一顶点。重复这一过程,直到所有顶点的颜色都已填上。设计#include<iostream>using namespa.

2020-06-21 18:17:55 229

原创 BG11

问题给定字符集C={x1,x2,…,xn}和每个字符的频率f(xi),求关于C的一个最优前缀码解析构造最优前缀码的贪心算法就是哈夫曼算法。将字符集作为森林,从中选出频率最低的两个字符,将这两个字符的合并成一棵新树,新树的根节点权值为两字符频率之和,从森林中删除这两个字符,将新树加入森林,重复直至全部合并为一颗树,即为所求的哈夫曼树。设计时间复杂度:O(nlogn)频率排序;for循环O(n),插入操作O(logn)。算法复杂度是O(nlogn)#include <ios..

2020-06-21 18:08:30 263

原创 BG10

问题相容问题,解析时给出其他几种贪心策略(如按开始时间从小到大、每个活动时间的占用时间等),并给出这些贪心策略无法实现最优的反例。问题描述有n项活动申请使用同一个礼堂,每项活动有一个开始时间和一个截止时间。如果任何两个活动不能同时举行,问如何选择这些活动,从而使得被安排的活动数量达到最多。解析[问题的理解和推导,可用电子版直接在此编写,也可用纸笔推导,拍照嵌入本文档]建模:设S={1,2,…,n}为活动的集合,si和fi分别为活动i的开始和截止时间,i=1,2,…,n定义:活动i和j相..

2020-06-21 18:00:13 145

原创 BG9

问题解析设计分析时间复杂度:T(n)=O(mn)

2020-06-21 17:46:41 208

原创 8 矩阵链乘法

#include <iostream>using namespace std; int m[100][100];int p[100];int n; void solve(){ cin >> n; for(int i = 0; i < n + 1; ++i) cin >> p[i]; for(int i = 0; i <= n; ++i) m[i][i] = 0; for(in...

2020-05-26 20:54:07 174

原创 7 投资问题

设m元钱,n项投资,函数f(x)i表示将x元投入第i项项目所产生的的效益,i=1,2,3…n.问:如何分配这m元钱,使得总效益最高?#include<iostream>#include<vector>using namespace std;int main() { int m, n; int i, j; int tmp_m, tmp_F = 0; cin >> m >> n; vector<vector&l...

2020-05-26 20:41:10 297

原创 6 特定分治

一组元素中选第 k 小元素3.W(n)≤tn+0.9tn+0.9"tn+⋯=tn(1+0.9+0.9"+⋯)=O(n)#include <iostream>#include <algorithm>using namespace std;int InsertSort(int array[], int left, int right);int GetPivotIndex(int array[], int left, int right);int...

2020-05-26 20:15:18 151

原创 5.蛮力算法、分治算法

P为笛卡尔平面上n>1个点构成的集合,求最近的两个点的距离(n=2k)蛮力穷举算法:遍历整个点集,计算每一对点之间的距离d,最终找出最近距离。分治算法:首先划分整个点集划分为两各部分S1和S2,每个子点集的点的数量都为n/2,最近点对会出现点对在S1中,点对在S2中,点对分别在S1和S2中。用递归分别计算前两种情况,最后分析第三种情况。最后合并,分析比较出三者中的最小值。4 #include<stdio.h>#include<stdlib.h>...

2020-05-26 19:58:48 723

原创 4 二分

对n个不同的数构成的数组A[1…n]进行排序,其中n=2^k#include <stdio.h>void Mergesort(int arr[], int g, int d); void Merge(int arr[], int g, int k, int d); void Mergesort(int arr[], int g, int d) { int k; if(g!= d) { k = (g+d)/2; Mergesort(arr...

2020-05-26 19:43:31 157

原创 3 对分和顺序

写出两种检索算法:在一个排好序的数组T[1…n]中查找x,如果x在T中,输出x在T的下标j;如果x不在T中,输出j=0.1)顺序查找顺序查找是按照序列原有顺序对数组进行遍历比较查询的基本查找算法。对于任意一个序列以及一个给定的元素,将给定元素与序列中元素依次比较,直到找出与给定关键字相同的元素,或者将序列中的元素与其都比较完为止。2)对分查找对分查找适用于顺序存储结构且关键字有序排列的情况。首先,将数组中间位置记录的关键字与查找关键字比较,若两者相等,则查找成功。否则利用中间位置记录将...

2020-05-26 19:24:17 288

原创 2.2Floyd算法

 用Floyd算法求解下图各个顶点的最短距离。#include<stdio.h>#include<iostream>#include<stdlib.h>#include<string.h>const int inf = 0x3f3f3f3f;const int maxn = 100;int mp[maxn][maxn];int u...

2020-05-26 19:14:07 147

原创 2.1迪杰特斯拉

//可以先了解一下“贪心”,即局部最优解//还有个概念叫dp,即动态规划//概念:点集s dis[i]表示从开始//单元最短:一维数组(多元可以二维等)//时间复杂度O(n^2)有一个是2n#include<stdio.h>#include<cstring>#include<iostream>#include<math.h>#inc...

2020-05-26 19:08:33 784

原创 1.2 Kruskal

问题在一给定的无向图G = (V, E) 中,(u, v) 代表连接顶点 u 与顶点 v 的边(即),而 w(u, v) 代表此边的权重,若存在 T 为 E 的子集(即)且为无循环图,使得到的 w(T) 最小,则此 T 为 G 的最小生成树。解析先构造一个只含 n 个顶点、而边集为空的子图,把子图中各个顶点看成各棵树上的根结点,之后,从网的边集 E 中选取一条权值最小的边,若该条边的两个顶点分属不同的树,则将其加入子图,即把两棵树合成一棵树,反之,若该条边的两个顶点已落在同一棵树上,则不...

2020-05-26 18:21:36 301

原创 1.1Prim

问题在一给定的无向图G = (V, E) 中,(u, v) 代表连接顶点 u 与顶点 v 的边(即),而 w(u, v) 代表此边的权重,若存在 T 为 E 的子集(即)且为无循环图,使得到的 w(T) 最小,则此 T 为 G 的最小生成树。解析输入:一个加权连通图,其中顶点集合为V,边集合为E,初始化:Vnew = {x},其中x为集合V中的任一节点(起始点),Enew = {},为空;重复下列a,b操作,直到Vnew = V:a.在集合E中选取权值最小的边<u, v>,其...

2020-05-26 18:13:12 224

空空如也

空空如也

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

TA关注的人

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