自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 算法大作业:圆的排列问题

问题描述 给定n个圆的半径序列,将它们放到矩形框中,各圆与矩形底边相切,求具有最小排列长度的圆排列。 解析 对于每个圆来说,与前面一个圆有两种位置关系,相离和相切,两个相切的圆之间的距离为srqt((r1+r2)^2 - (r1-r2)^2),即2sqrt(r1*r2); 对于与前一个圆相离的圆来说需要算和前面i-1个圆相切时的长度,然后取最大值即可。 要得到圆的排列长度需要知道最后一个圆的很坐标x,加上第一个圆的半径和最后一个圆的半径; 通过排列出所有的情况,取最小值就可以得出最小排序。 用回溯的方法,

2020-06-16 21:50:33 713

原创 算法图解读后感

读后感 因为自己的编程基础不是太好,在图书馆查看了一些算法书之后发现对于我来说都很晦涩难懂,所以我就上网查了一下浅显易懂的算法书都有哪些,于是就找到了这本《算法图解——像小说一样有趣的算法入门书》。 一开始我就被这个书名吸引到了,像小说一样,那应该很有趣。翻开之后,第一章算法简介。一开始讲了二分算法,他用很直观的漫画的形式讲解了二分算法的原理,就很直观,一下子就知道了二分算法的内涵。 而且漫画画的也很可爱,一下子就提起了我的兴趣。 作者给出了猜数字的两种算法——简单查找和二分查找。一百个数中的一个数,以最

2020-06-15 21:32:18 727

原创 贪心算法之相容问题

问题描述 有n项活动申请使用同一个礼堂,每项活动有一个开始时间和一个截止时间。如果任何两个活动不能同时进行,问如何选择这些活动,从而使得被安排的活动数量达到最多。 解析 反例: 伪代码 原码 #include <bits/stdc++.h> using namespace std; const int maxn=1111; struct node{ int i; int s; int f; }a[maxn]; int cmp(const node &a,const no

2020-06-15 16:49:24 349

原创 作业12—图的M着色问题

问题 解析 可以通过回溯的方法,不断的为每一个节点着色,在前面n-1个节点都合法的着色之后,开始对第n个节点进行着色,这时候枚举可用的m个颜色,通过和第n个节点相邻的节点的颜色,来判断这个颜色是否合法,如果找到那么一种颜色使得第n个节点能够着色,那么说明m种颜色的方案是可行的。 源代码 #include <iostream> #include <cstdio> using namespace std; int n,m; int a=1,b=1; int count=0; in

2020-06-02 21:17:51 218

原创 选第k小元素:特定分治策略

问题描述 用特定的分治策略,选第K小的元素 解析 代码 #include <stdio.h> #include <stdlib.h> void merge(int a[],int left,int mid,int right) //二分归并排序 { int i,k; int *tmp = (int *)malloc((right-left+1)*sizeof(int)); int left1=left; int left2=mid; i

2020-05-25 18:42:55 269

原创 最优前缀码

问题 解析 代码 #include<cstdio> #include<cstdlib> #include<cstring> #include<algorithm> using namespace std; #define n 6 #define m 2*n-1 typedef struct{ double weight; int parent,lchild,rchild; }H

2020-05-18 23:39:39 670

原创 实验九——最长公共子序列LCS算法

问题 给定序列 X=< x1,x2,…,xm> , Y=<y1,y2,…,yn> 求X和Yd最长公共子序列; 解析 Xi=< x1,x2,…,xi> Yj=< y1,y2,…,yj> Zk=< z1,z2,…,zk> 如果Zk是Xi和Yi的最长公共子序列 伪代码 源码 #include <stdio.h> #incl...

2020-04-27 22:12:39 339

原创 算法设计与分析实验八——动态规划之矩阵链相乘

问题描述 设A1, A2, A3…, An为n个矩阵序列,其中Ai为Pi-1 * Pi阶矩阵,这个矩阵链的输入用向量P=< P0, P1,…,Pn>给出,给定向量,确定一种乘法次序,使得基本运算的总次数达到最小。 解析 伪代码(迭代算法) 原码 #include <bits/stdc++.h> using namespace std; const int siz...

2020-04-20 21:24:28 810

原创 动态规划之投资问题

问题描述 递推公式 实例 源代码 #include <bits/stdc++.h> using namespace std; const int M = 5; const int N = 6; int maxProfit(int v[M][N],int f[M][N],int n,int money){ for(int i=1;i<=n;i++){ for(...

2020-04-13 22:08:05 372

原创 《算法分析与设计实验五》——最近对问题

问题描述 P为笛卡尔平面上n>1个点构成的集合,求最近的两个点的距离(n=2^k) 思路解析 伪代码 程序原码`#include <bits/stdc++.h> #define inf 0x3f3f3f3f using namespace std;` ...

2020-03-30 22:15:43 450

原创 算法分析与设计实践4:二分归并排序

二分归并排序:对n个不同的数构成的数组A[1…n]进行排序,其中n=2^k 核心算法及图解 其算法核心思想就是把一个大问题在不改变前提的条件下拆分为若干个小问题,实现分而治之; 以数组arr[8] = {7, 3, 10, 4, 19, 0, 13, 9}为例 复杂度 代码 #include <bits/stdc++.h> using namespace std; int...

2020-03-23 21:11:43 176

原创 算法分析作业

问题:在一个排好序的数组T[1…n]中查找x,如果x在T中,输出x在T的下标j;如果x不在T中,输出j=0 算法1:遍历数组 原理:从数组T[0]开始,一个一个遍历,直到找到x; 函数代码: int traverse(int* arr,int n,int k){ int i=0; for(i=0;i<n;i++){ if(arr[i]==k){ return i; ...

2020-03-16 22:33:54 232

原创 Dijkstra算法

主要思想 设置一个集合S存放已经找到最短路径的顶点,S的初始状态只包含源点v, 对vi∈V - S,假设从源点v到vi的有向边为最短路径(从v到其余顶点的最短路径的初值)。 以后每求得一条最短路径v, …, vk,就将vk加入集合S中,并将路径v, …, vk, vi与原来的假设相比较,取路径长度较小者为最短路径。 重复上述过程,直到集合V中全部顶点加入到集合S中 列题 #include &lt...

2020-03-09 22:11:55 110

原创 Floyd算法

基本思想 图G用邻接矩阵表示,通过一个三重循环,产生一个存储每个节点最短距离的矩阵; 任意节点i到j的最短路径两种可能: 1. 直接从i到j; 2. 从i经过若干个节点k到j。 map(i,j)表示节点i到j最短路径的距离,对于每一个节点k,检查map(i,k)+map(k,j)小于map(i,j),如果成立,map(i,j) = map(i,k)+map(k,j);遍历每个k,每次更新的是除第k...

2020-03-09 21:22:04 377

原创 算法设计与基础实验1 prime算法和Kruskal算法构造最小生成树

prime算法 基本思想 任取一个点加入生成树 从一个顶点在生成树中另一个点不在的边中选出权重最小的边并将另一个顶点加入生成树 重复步骤2直到所有点都加入了生成树,此时的生成树即为最小生成树 图解 伪代码 int prime(int shoujiedian)//首个节点 { 1.标记数组,全部为未访问 2. for(i=0;i<N;i++) 将与i点边相连 的边存入数组dist...

2020-03-02 21:48:46 553 2

空空如也

空空如也

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

TA关注的人

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