自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 最低加油次数

最低加油次数题目描述汽车从起点出发驶向目的地,该目的地位于出发位置东面 target 英里处。沿途有加油站,每个 station[i] 代表一个加油站,它位于出发位置东面 station[i][0] 英里处,并且有 station[i][1] 升汽油。假设汽车油箱的容量是无限的,其中最初有 startFuel 升燃料。它每行驶 1 英里就会用掉 1 升汽油。当汽车到达加油站时,它可能停下来加油,将所有汽油从加油站转移到汽车中。为了到达目的地,汽车所必要的最低加油次数是多少?如果无法到达目的地,则

2020-10-15 14:48:40 246

原创 最大字段和

题目描述:给出一段序列,选出其中连续且非空的一段使得这段和最大。输入格式:第一行:是一个正整数N,表示了序列的长度。第二行:包含N个整数num[i],描述了这段序列。输出格式:第一行:一个整数,为最大的子段和是多少。第二行:起始位置和终止位置输入样例:72 -4 3 -1 2 -4 3输出样例:43 5分析:b[j]为从1到j位置的最大子段和:当b[j-1]>0时,b[j]=b[j-1]+a[j];当b[j-1]<0时,b[j]=a[j];代码:#inclu

2020-05-26 19:32:27 150

原创 最长公共子序列

【题目描述】一个给定序列的子序列是在该序列中删去若干元素后得到的序列。确切地说,若给定序列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,7>。给定两个序列X和Y,当另一序列Z既是X的

2020-05-25 22:49:42 230

原创 矩阵连乘问题

【题目描述】给定n个矩阵{A1,A2,…,An},其中Ai与Ai+1是可乘的,i=1,2 ,…,n-1。如何确定计算矩阵连乘积的计算次序,使得依此次序计算矩阵连乘积需要的数乘次数最少。【输入】输入包含多组测试数据。第一行为一个整数C,表示有C组测试数据,接下来有2*C行数据,每组测试数据占2行,每组测试数据第一行是1个整数n,表示有n个矩阵连乘,接下来一行有n+1个数,表示是n个矩阵的行及第n个矩阵的列,它们之间用空格隔开.【输出】你的输出应该有C行,即每组测试数据的输出占一行,它是计算出的矩阵最

2020-05-23 22:21:36 1659

原创 继承和多态

继承在已有类的基础上创建新类的过程一个 B 类继承A类,或称从类 A 派生类 B类 A 称为基类(父类),类 B 称为派生类(子类)类继承关系的语法形式class 派生类名 : 基类名表{数据成员和成员函数声明};基类名表 构成访问控制 基类名1, 访问控制 基类名2 ,… , 访问控制 基类名n访问控制 表示派生类对基类的继承方式,使用关键字:public 公有继承private 私有继承protected 保护继承无论哪种方式继承基类,派生类都不能直接使用基类的

2020-05-23 07:59:40 112

原创 输油管道问题

某石油公司计划建造一条由东向西的主输油管道。该管道要穿过一个有n 口油井的油田。从每口油井都要有一条输油管道沿最短路经(或南或北)与主管道相连。如果给定n口油井的位置,即它们的x 坐标(东西向)和y 坐标(南北向),应如何确定主管道的最优位置,即使各油井到主管道之间的输油管道长度总和最小的位置? 证明可在线性时间内确定主管道的最优位置。给定n口油井的位置, 计算各油井到主管道之间的输油管道最小长度总和。输入格式:输入的第1 行是油井数n,1<=n<=10000。接下来n 行是油井的位置,

2020-05-22 21:59:32 124

原创 循环比赛日程表

【题目描述】设有N个选手进行循环比赛,其中N=2M,要求每名选手要与其他N−1名选手都赛一次,每名选手每天比赛一次,循环赛共进行N−1天,要求每天没有选手轮空。【输入】输入:M。【输出】输出:表格形式的比赛安排表。一行各数据间用一个空格隔开。【输入样例】3【输出样例】1 2 3 4 5 6 7 82 1 4 3 6 5 8 73 4 1 2 7 8 5 64 3 2 1 8 7 6 55 6 7 8 1 2 3 46 5 8 7 2 1 4 37 8 5 6 3 4 1 28

2020-05-21 11:42:43 516

原创 全排列

【题目描述】给定一个由不同的小写字母组成的字符串,输出这个字符串的所有全排列。我们假设对于小写字母有‘a’ <‘b’ < … <‘y’<‘z’,而且给定的字符串中的字母已经按照从小到大的顺序排列。【输入】只有一行,是一个由不同的小写字母组成的字符串,已知字符串的长度在1到6之间。【输出】输出这个字符串的所有排列方式,每行一个排列。要求字母序比较小的排列在前面。字母序如下定义:已知S=s1s2…sk,T=t1t2…tk,则S<T等价于,存在p(1≤p≤k),使得s1

2020-05-20 20:39:56 782

原创 整数划分

整数划分问题是算法中的一个经典命题之一。把一个正整数n表示成一系列正整数之和:n = n1 + n2 + ~ + nk 其中,n1>=n2>=~>=nk>=1 ,k>=1正整数n的这种表示称为正整数n的划分。正整数n的不同划分个数称为正整数n的划分数,记作 P(n) 。正整数6有如下11种不同的划分,所以 。65+14+2, 4+1+13+3, 3+2+1, 3+1+1+12+2+2, 2+2+1+1, 2+1+1

2020-05-19 18:44:43 194

原创 回溯算法

回溯算法回溯法是一种组织搜索的一般技术,有“通用的解题法”之称,用它可以系统的搜索一个问题的所有解或任一解。有许多问题,当需要找出它的解集或者要求回答什么解是满足某些约束条件的最佳解时,往往要使用回溯法。可以系统地搜索一个问题的所有解或任意解,既有系统性又有跳跃性。回溯法的基本做法是搜索,或是一种组织得井井有条的,能避免不必要搜索的穷举式搜索法。这种以深度优先的方式系统地搜索问题的解的方法称为回溯法。问题的解空间应用回溯法求解时,需要明确定义问题的解空间。问题的解空间应至少包含问题的一个(最

2020-05-11 16:42:02 155

原创 贪心算法

在求最优解问题的过程中,依据某种贪心标准,从问题的初始状态出发,直接去求每一步的最优解,通过若干次的贪心选择,最终得出整个问题的最优解,这种求解方法就是贪心算法。从贪心算法的定义可以看出,贪心算法不是从整体上考虑问题,它所做出的选择只是在某种意义上的局部最优解,而由问题自身的特性决定了该题运用贪心算法可以得到最优解。如果一个问题可以同时用几种方法解决,贪心算法应该是最好的选择之一。理论基础:贪心算法是一种在每一步选择中都采取在当前状态下最好或最优的选择,希望得到结果是最好或最优的算法。贪心算法是一

2020-05-11 15:30:28 102

原创 动态规划

基本思想:动态规划算法通常用于求解具有某种最优性质的问题。在这类问题中,可能会有许多可行解。 每一个解都对应于一个值,我们希望找到具有最优值的解。基本思想是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。适合于用动态规划求解的问题,经分解得到子问题往往不是互相独立的。若用分治法来解这类问题,则分解得到的子问题数目太多,有些子问题被重复计算了很多次。如果我们能够保存已解决的子问题的答案,而在需要时再找出已求得的答案,这样就可以避免大量的重复计算,节省时间。步骤:

2020-05-11 14:30:02 116

原创 递归与分治策略

递归算法程序直接或间接调用自身的编程技巧一个过程或函数在其定义或说明中又直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足是,递归前进;当边界条件满足时,递归返回。注意:在使用递增归策略时,必须有一个明确的递归结束条件,称为递归出口,否则将无限进行下去(死锁)。递归的缺点:解题的运行效率较

2020-05-11 14:04:31 332

原创 递推算法

递推法是一种重要的数学方法,在数学的各个领域中都有广泛的运用,也是计算机用于数值计算的一个重要算法。这种算法特点是:一个问题的求解需一系列的计算,在已知条件和所求问题之间总存在着某种相互联系的关系,在计算时,如果可以找到前后过程之间的数量关系(即递推式),那么,从问题出发逐步推到已知条件,此种方法叫逆推。无论顺推还是逆推,其关键是要找到递推式。这种处理问题的方法能使复杂运算化为若干步重复的简单运算,充分发挥出计算机擅长于重复处理的特点。  递推算法的首要问题是得到相邻的数据项间的关系(即递推关系)。递推算

2020-05-11 12:40:26 545

原创 算法-绪论

为什么要学算法:算法——程序的灵魂提高分析问题的能力**算法:**对特定问题求解步骤的一种描述,是指令的有限序列。算法的五大特性:输入:一个算法有零个或多个输入。输出:一个算法有一个或多个输出。有穷性:一个算法必须总是在执行有穷步之后结束,且每一步都在有穷时间内完成。确定性:算法中的每一条指令必须有确切的含义,对于相同的输入只能得到相同的输出。可行性:算法描述的操作可以通过已经实现的基本操作执行有限次来实现。算法的描述方法自然语言:优点:容易理解缺点:冗长、二义性使用方法

2020-05-11 12:34:40 153

原创 标准模板库STL

STL是C++标准程序库的核心,深刻影响了标准程序库的整体结构STL由一些可适应不同需求的集合类(collection class),以及在这些数据集合上操作的算法(algorithm)构成STL内的所有组件都由模板(template)构成,其元素可以是任意类型STL是所有C++编译器和所有操作系统平台都支持的一种库STL组件:容器 - 管理某类对象的集合迭代器 - 在对象集合...

2020-04-26 20:12:43 126

原创 运算符重载

重载运算符的限制重载运算符函数可以对运算符作出新的解释,但原有基本语义不变:不改变运算符的优先级不改变运算符的结合性不改变运算符所需要的操作数不能创建新的运算符一元运算符Object op 或 op Object重载为成员函数,解释为: Object. operator op() 操作数由对象Object通过this指针隐含传递重载为友元函数,解释为: operat...

2020-04-06 18:12:12 222

原创 类与对象2

this指针使用的情况在类的非静态成员函数中返回类对象本身或对象的引用的时候return *this; //返回对象 return this; //返回对象的地址当参数与成员变量名相同时。在构造函数中 参数与类成员相同时,不能写成 x = x; 应为:this->x = x;避免对同一对象进行赋值操作,判断两个对象是否相同时,使用this指针。#include <iost...

2020-04-06 16:09:59 171

原创

类的定义:类是对具有相同属性和行为的一类客观事物的概括描述。是用户自定义的数据类型(程序设计语言角度)类的定义包括行为和属性两个部分。属性以数据表示,行为通过函数实现。c++类定义的格式:class 类名{ public: 公有数据成员和成员函数; protected: 保护数据成员和成员函数; private: ...

2020-03-15 12:07:13 190

原创 指针和引用

内存地址程序运行时,代码和需要的数据都被存储在内存中内存是有序的字节序列,每个字节都有唯一的地址,使用该地址可以确定字节的位置,用以存储和获取数据直接访问和间接访问通过变量的名字直接访问为程序中定义的变量分配的内存单元,存取变量的值使用变量的内存地址找到存放数据的单元,间接访问其中的内容指针指针的特点:指针持有一个对象的地址,称为指针“指向”该对象通过指针可以间接操纵它指向的对...

2020-03-11 22:05:44 133

原创 标准库类型string

string表示可变长度的字符序列string类支持字符串对象的各种操作各种初始化方式字符串之间的复制、比较、连接查询字符串长度和判断字符串是否为空访问字符串中的单字符string s1; //默认初始化,s1是一个空串string s2(s1); //s2是s1的副本string s2 = s1 //等...

2020-03-11 21:14:23 90

原创 结构体和枚举

结构体:是由一系列具有相同类型或不同类型的数据构成的数据集合,也叫结构。声明格式:struct 类型名{ 数据类型1 成员名1; 数据类型2 成员名2; … 成员函数};特点:可以对结构体变量整体进行操作。可以对结构体变量的成员进行操作 变量名.成员名结构体变量的初始化方法与数组类似结构体内可以定义成员函数【问题描述】输入 n 个学生的信...

2020-03-11 19:54:53 141

原创 递归

递归算法:程序直接或间接调用自身的编程技巧递归函数:直接或间接调用自身的函数基本思想:把一个不能或不好解决的大问题转化为一个或几个小问题,再把这些小问题进一步分解成更小的小问题。递归的关键在于找出递归定义和递归终止条件递归定义:使问题向边界条件。递归终止条件:所描述问题的最简单情况,它本身不再使用递归的定义。解题步骤:分析问题、寻找递归:找出大规模问题与小规模问题的关系,这样通过...

2020-03-04 21:07:06 59

原创 排序

排序的基本概念排序:给定一组记录的集合{r1, r2, ……, rn},其相应的关键码分别为{k1, k2, ……, kn},排序是将这些记录排列成顺序为{rs1, rs2, ……, rsn}的一个序列,使得相应的关键码满足ks1≤ks2≤……≤ksn(称为升序)或ks1≥ks2≥……≥ksn(称为降序)。正序:待排序序列中的记录已按关键码排好序。逆序(反序):待排序序列中记录的排列顺序与排...

2019-12-17 11:19:12 97

原创 查找2

二叉排序树二叉排序树(也称二叉查找树):或者是一棵空的二叉树,或者是具有下列性质的二叉树:⑴若它的左子树不空,则左子树上所有结点的值均小于根结点的值;⑵若它的右子树不空,则右子树上所有结点的值均大于根结点的值;⑶ 它的左右子树也都是二叉排序树。二叉排序树的插入若二叉排序树为空树,则新插入的结点为新的根结点;否则,新插入的结点必为一个新的叶子结点,其插入位置由查找过程得到。若二叉排序树...

2019-12-17 10:50:53 246

原创 查找技术

查找的基本概念列表:由同一类型的数据元素组成的集合。关键码:数据元素中的某个数据项,可以标识列表中的一个或一组数据元素。键值:关键码的值。主关键码:可以唯一地标识一个记录的关键码。次关键码:不能唯一地标识一个记录的关键码。查找 :在具有相同类型的记录构成的集合中找出满足给定条件的记录。查找的结果 :若在查找集合中找到了与给定值相匹配的记录,则称查找成功;否则,称查找失败。静态查找 ...

2019-12-04 21:55:23 320

原创

**AOV网:**在一个表示工程的有向图中,用顶点表示活动,用弧表示活动之间的优先关系,称这样的有向图为顶点表示活动的网,简称AOV网。AOV网特点:1.AOV网中的弧表示活动之间存在的某种制约关系。2.AOV网中不能出现回路 。拓扑序列:设G=(V,E)是一个具有n个顶点的有向图,V中的顶点序列v1, v2, …, vn称为一个拓扑序列,当且仅当满足下列条件:若从顶点vi到vj有一条路...

2019-11-26 18:59:59 56

原创

最小生成树:生成树的代价:设G=(V,E)是一个无向连通网,生成树上各边的权值之和称为该生成树的代价。最小生成树:在图G所有生成树中,代价最小的生成树称为最小生成树。普利姆(prim)算法:基本思想:设G=(V, E)是具有n个顶点的连通网,T=(U, TE)是G的最小生成树,T的初始状态为U={u0}(u0∈V),TE={ },重复执行下述操作:在所有u∈U,v∈V-U的边中找...

2019-11-26 18:47:00 63

原创

一、图的逻辑结构图的定义:图是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G=(V,E)其中:G表示一个图,V是图G中顶点的集合,E是图G中顶点之间边的集合。在线性表中,元素个数可以为零,称为空表;在树中,结点个数可以为零,称为空树;在图中,顶点个数不能为零,但可以没有边。若顶点vi和vj之间的边没有方向,则称这条边为无向边,表示为(vi,vj)。如果图的任意两个顶点...

2019-11-26 18:30:10 161

原创 树和二叉树2

树中结点数目template<class T>int BiTree<T>::count(BiNode<T>* root){ int number=0; if (root==NULL) number=0; else number=count(root->lchild)+count(root->rchild)+1; return n...

2019-11-12 10:56:32 78

原创 树和二叉树

树:n(n≥0)个结点的有限集合。当n=0时,称为空树;任意一棵非空树满足以下条件:⑴ 有且仅有一个特定的称为根的结点;⑵ 当n>1时,除根结点之外的其余结点被分成m(m>0)个互不相交的有限集合T1,T2,… ,Tm,其中每个集合又是一棵树,并称为这个根结点的子树。结点的度:结点所拥有的子树的个数。树的度:树中各结点度的最大值。叶子结点:度为0的结点,也称为终端结点。分支结...

2019-11-12 10:33:59 70

原创 字符串和多维数组

1.字符串储存串的存储结构顺序串:用数组来存储串中的字符序列。链接串:用链接存储结构来存储串。2.模式匹配BF算法:int BF(char S[ ], char T[ ]){ i=0; j=0; while (i<S.Length()&&j<T.length()) { if (S[i]==T[j]) { ...

2019-11-09 09:26:25 75

原创 队列

队列限定在表尾和表头进行插入和删除操作的线性表。队列的操作特点: 先进先出。顺序队列的基本操作#include <iostream>using namespace std;template <class T>class seqqueue{public: seqqueue(); ~seqqueue(){ }; void push(T ...

2019-11-02 10:08:38 61

原创 顺序栈

顺序栈的基本应用#include <iostream>using namespace std;template <class T>class seqstack{public: seqstack(); ~seqstack(){ }; void push(T x); T pop(); T getpop(); int E...

2019-11-02 09:57:36 47

原创 栈的基本应用

栈的基本应用栈是限定符在表未进行插入和删除操作的线性表。具有先进后出的性质栈#include <iostream>using namespace std;template <class T>struct node{ T data; node *next;};template <class T>class linkstack...

2019-11-02 09:53:24 138

原创 单链表

#include <iostream>using namespace std;template <typename T>struct node{ T data; node *next;};template <class T>class linklist{public: linklist(); linklist(...

2019-09-23 20:22:27 53

原创 顺序表

#include <iostream>using namespace std;template <class T>class seqlist{public: seqlist();//构造 seqlist(T a[],int n);//构造 ~seqlist()//析构 { } int Length();//表长...

2019-09-17 23:37:39 43

空空如也

空空如也

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

TA关注的人

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