自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 活动选择与小船过河问题(贪心算法)

活动选择问题描述:存在一个教室,有下面若干个活动需要安排在一天进行,活动之间不能重叠,如何安排活动使活动的数量最多?活动序号 1 2 3 4 5 6 7 8 9 10 11  (活动已经按结束时间排好)开始时间 1 3 0 5 3 5 6 8 8 2  12结束时间 4 5 6 7 9 9 1011 12 14 16贪心解题思路:贪心的核心在于局部最优解,在

2018-01-29 06:34:47 3671 2

原创 0/1背包问题与矩阵乘法链(动态规划)

何为0/1背包问题:0/1背包为一种特殊的背包问题,一个固定容量C的背包要装N种物品,每种物品只有一个,每种物品重量和价值都不相同,且只能选择装进去或者不装进去(即选择0或者1,无法只装一部分),要使背包中的物品价值最大,此为0/1背包问题。具体问题描述:存在一个容量为10的背包,有5种物品,分别重2,2,6,5,4千克,价值分别是6,3,5,4,6元,选择方案使背包中物品的总价值最大

2018-01-28 02:59:48 972

原创 图的应用之拓扑排序实现(辅助栈)

何为拓扑排序:一般常见的图是有环的,不需要考虑顶点的先后顺序,而比如在一些工程中,工程的流程图就需要考虑顶点的先后顺序,比如B的前置条件是完成A,这就需要拓扑排序来判断图是否满足拓扑次序,并且能够形象的显示各个顶点的先后顺序。拓扑排序有多种解,拓扑排序的解并不是唯一的,有些顶点的优先性是相同的。通常我们把顶点表示活动,边表示活动的先后关系的有向图称为顶点活动网(Activity On

2018-01-26 21:14:52 2553

原创 最短路径简单实现(Dijkastra算法和Floyd算法)

什么是最短路径:图中的某一个节点到另外某一个节点的最短路径的权值和,如果是无权值的图,则理解为权值为1的图。图的邻接矩阵结构:要计算最短路径,首先需要一个图,这里用邻接矩阵来表示一个图。typedef char VertexType; //顶点类型 ,默认为chartypedef int EdgeType; //边的权值 默认int

2018-01-25 21:06:08 2550

原创 最小生成树简单实现(Prim算法与Kruskal算法)

最小生成树简述:最小生成树(Minimum Spanning Tree)指,在一个有权图中寻找最小权值和的树来连通所有顶点。Prim算法简述及准备:Prim的思路很简单,设定一个初始点(列如V0),寻找从此连接的最小的权值的边,然后开始一起比较下一个点出去的所有边的权值,最终得到最小权值的连通所有点的边的最小生成树。需要一个邻接矩阵表示的图来用于算法的实现:typedef ch

2018-01-23 09:17:27 481

原创 无向图的深度优先搜索与广度优先搜索

图的简述:图是一种复杂的数据结构,图(Graph)是由顶点(Vertex)组成的非空有穷集合和顶点之间的边(Edge)组成。图的边可以由权值(weight),也可以没有,有权值的图称为网图。图的边也可以有方向,没有方向的为无向图,有方向的为有向图。图很复杂,就需要复杂的方式来表示图,一般简单的使用邻接矩阵和邻接表来表示,还有十字链表和邻接多重表等,这里只介绍前两种的实现。无向图

2018-01-22 20:19:25 1882

原创 排序算法之归并排序的递归与迭代实现方法

归并排序简述:归并排序是排序算法的一种新的思路,旨在把两个或以上有序的数列归并一个有序的数列,是为归并。假如有一个含有n个元素的数组,将其看作n个有序列,然后两两归并,最终得到一个有序列。排序前的准备:#define MAXSIZE 10//顺序表结构template struct SqList{ T s[MAXSIZE + 1] = { NULL, 98, 24, 55

2018-01-20 20:15:00 1282

原创 排序算法之希尔排序和堆排序

希尔排序简述:希尔排序可以看作是直接插入排序的一种优化,即把一个数插入一个有序表,不过希尔排序多了一个默认的增量,把一个序列分成若干个增量大小的增量序列,然后在子序列直接进行直接插入排序,每次都使较小的数排到靠前的子序列里面,增量不断减小,子序列也不断缩小,最终使整个表有序。排序前的准备:准备了一个默认的顺序表#define MAXSIZE 10//顺序表结构template

2018-01-15 18:36:13 2108

原创 简单排序算法之简单选择排序和直接插入排序

简单选择排序简述:简单选择排序(Simple Selection Sort)可以说是冒泡排序的一种改版,它不再两两比较出较小数就进行交换,而是每次遍历比较当前数的后面所有数,最后再把最小的数和当前数进行交换。排序前的准备:#define MAXSIZE 10//顺序表结构template struct SqList{ T s[MAXSIZE + 1] = { NULL,

2018-01-13 19:22:42 5427

原创 简单排序算法之三种冒泡排序

冒泡排序简述:冒泡排序(Bubble Sort)本质是一种交换排序,不停比较前后两个元素大小,反序则交换,直到没有反序为止。排序前的准备:#define MAXSIZE 10//顺序表结构template struct SqList{ T s[MAXSIZE + 1] = { NULL,98,24,55,81,32,77,48,60,14,8 }; //

2018-01-13 17:26:03 280

转载 散列(哈希)表的C++简单操作和实现(线性探查)

散列(哈希)表的简述:散列是数据结构字典的另一种表示方法,它用一个散列函数把关键字映射到散列表的具体位置。散列表是一种面向查找的数据结构,它回避了关键词之间不断比较的麻烦,直接一步到位找到关键词的位置,是高效的。散列函数:散列函数可以有很多种,常见的有(1)平方区中法:把关键词平方后,取中间三位数字,适用于位数较小的关键词。(2)求模取余法:用一个求模函数,取得

2018-01-12 17:17:20 1997 2

原创 二叉搜索树的简单操作与实现

二叉搜索树(BinarySearchTree)性质  二叉搜索树首先是一棵二叉树,二叉树可能为空,而一颗非空的二叉搜索树要满足以下条件:  (1)每个元素有一个关键字,所有关键字是唯一的。(关键字不唯一的二叉搜索树叫有重复值的二叉搜索树)  (2)在根节点的左子数的元素都小于根节点的关键字。  (3)在根节点的右子数的元素都大于根节点的关键字。  (4)根节点的左右子树也是一棵

2018-01-11 15:57:10 176

原创 从零开始学习c++之函数模板与类模板

什么是模板:模板是c++中泛型编程的基础,一个模板就是一个创建类或函数的蓝图或者说是公式,当使用一个vector这样的泛型类型或者find这样的泛型函数时,我们提供足够的信息,将蓝图转换为特定的类或者函数函数模板:定义模板:假如我们要比较两个数的大小,我们可能会写出下面这样的函数//比较两个string类参数大小int compare(const string &v1

2017-12-06 23:37:39 296

原创 从零开始学习c++之运算符重载与类型转换

运算符重载:

2017-12-05 19:14:45 292

原创 从零开始学习c++之拷贝构造函数

拷贝构造函数:定义:  如果一个构造函数的第一个参数是自身类类型的引用,且任何额外参数都有默认值,则此构造函数是拷贝构造函数。class Foo{public: Foo(){}; //默认构造函数 Foo(const Foo& f){}; //默认拷贝构造函数}拷贝构造函数的第一个参数必须是引用类型,虽然可以定义一个接收非const引用的拷贝构

2017-12-04 18:40:21 212

原创 从零开始学习c++之初识指针和引用

指针:指针(pointer) 是一个值为内存地址的变量   内存地址一般使用16进制表示比如0028FF44指针的本质只是一个变量,指针大小为4个字节指针的声明: //第一种声明方式 int* ptr_i1; //偏向于地址,p理解为一个地址变量,int*是类型 //第二种声明方式 int *ptr_i2; //偏向于值,*p理解为一个int型变

2017-11-20 21:31:58 247

原创 简单泊车管理系统-c++实现

泊车系统该系统要求对一个文件中所存储的汽车数据进行各种常规操作,如:查找、计费、显示等功能。目的是熟练掌握文件、数组的各种操作,以及一些算法思想的应用,实现一个简单的泊车管理系统。#include #include #include #include #include #include using namespace std;struct Location //

2017-11-16 02:36:27 955

原创 从零开始学习c++之一维、二维数组和vector的简单使用

数组:C++中的数组和C中一样,数组大小不可更改,必须声明时确定数组大小,只有在初始化时才能一次性赋值,后续赋值只能按索引单个元素赋值;数组虽然不够灵活,但效率很高,对于特定情况作用很大。下面是数组的几种可行声明和初始化: int seconds[2] = { 1,2 }; //一般声明 int year[6] = { 2

2017-11-13 22:22:17 309

原创 从零开始学习c++之程序计算的简单应用

在学习了选择和循环结构以及vector的简单使用后,可以进行下面一些题目的简单应用1.//编写猜数游戏程序 系统随机一个1000以内数,猜出这个数 int n; //输入数 int num = 1; //随机数 int count = 1; //次数 srand(time(NULL)); num = rand() % 1000;

2017-11-12 15:44:35 243

原创 从零开始学习c++之选择循环结构、运算符、初始vector

选择结构://if条件结构:int a = 0;int b = 0;cout cin >> a >> b;if (a > b)cout else if (a cout elsecout //switch条件结构:constexpr double cm_per_inch = 2.54;      //定义常量每英寸折合多少厘米d

2017-11-11 19:35:36 265

原创 从零开始学习c++之一

惯例第一步:写一个HelloWorld程序使用的IDE是Visual Studio 2017#include using namespace std;int Main(){ cout << "HelloWorld" << endl; cin.get(); return 0;}输出结果: HelloWorld代码解析:#include

2017-11-10 22:33:25 3401

空空如也

空空如也

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

TA关注的人

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