自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Everlasting2016的博客

我流我的汗水 华丽如天花乱坠

  • 博客(14)
  • 收藏
  • 关注

原创 稀疏矩阵

定义:M*N的矩阵,矩阵中有效值的个数远小于无效值的个数,且这些数据的分布没有规律。具体实现代码:1、定义一个三元组因为要分布没有规律,所以用一个三元组来保存坐标与值之间的关系代码如下:templatestruct Triple{public: Triple(int row=0,int col=0,const T& value=T()) :_row(row)

2016-04-23 22:28:29 609

原创 对称矩阵及对称矩阵的压缩存储

定义:设一个N*N的方阵A,A中任意元素Aij,当且仅当Aij == Aji(0 压缩矩阵:(1)压缩存储称矩阵存储时只需要存储上三角/下三角的数据,所以最多存储n(n+1)/2个数据。(2)对称矩阵和压缩存储的对应关系:下三角存储i>=j, SymmetricMatrix[i][j] == Array[i*(i+1)/2+j]代码如下:函数声明如下:tem

2016-04-19 18:55:36 2203

原创 栈的应用之迷宫问题

1、

2016-04-18 18:35:39 410

原创 实现一个具有GetMin功能的栈

题目:实现一个栈,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)基本思路:(1)建立两个栈,一个为普通的容纳数据的栈stackData,一个为stackMin的栈用来返回最小值(2)压入数据时,stackData直接压入数据newNum`   stackMin若为空,直接压入数据newNum。若不为空若不为空,则则比较要压入数据n

2016-04-16 22:47:32 593

原创 汉诺塔问题

题目: A、B、C 三个桌子,其中A桌子上放了几个大小不同的盘子,盘子的排列顺序为: 从上到下,依次从小到大递增;现要求把这些盘子从 A 桌子上移动到 C 桌子上,盘子移动时有一点要求:每次移动必须保证三张桌子上大盘子在下、小盘子在上。实现函数打印最优移动轨迹举例说明:(1) A 上一张 盘子时移动顺序: A -> C(2)A上有两张盘子时:移动顺序: A->BB->C

2016-04-14 19:50:54 610

原创 数字的组合

题目:输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符abc,则打印出由字符a、b、c所能组合出来的所有字符串a、b、c、ab、ac、bc、abc‘。前面的博客中解析了全排列的问题,当交换字符串中的两个字符时,虽然能得到两个不同的排列,但却是同一个组合,比如ab和ba是不同的排列,但只算是一个组合基本思路:子问题:求n个字符组成长度为m的组合的问题分解成两个子问题

2016-04-13 17:12:00 479

原创 数字的全排列

题目:输入一个字符串,打印出该字符串中字符的所有全排列》例如输入字符串abc,则打印出由字符a、b、c所能排列出来的所有字符串abc.、acb、bac。cab和cba。一、递归版本1、未去除重复值子问题:第一个数字与后面每一个数字进行交换结束条件:遍历到最后一个字符,后面再也无法进行交换代码如下:void FullPermutation(char arr[], int

2016-04-13 16:40:12 611

原创 一个数组实现连个栈

基本思路:两个栈共用一片空间,这就设计到怎么设计的问题,怎么可以合理的利用这片空间(1)从中间往两边增加,这样不栈底的位置设计不合理,便会造成空间的浪费(2)从两边往中间push(),可以合理的利用空间(3)还可以按照数组下标的奇偶进行push(),同样这样但两个栈的大小差距太大的时候,也会造成较大的空间浪费代码实现如下:(从两边向中间进行push)函数声明:templ

2016-04-13 16:14:29 352

原创 元素出栈、入栈顺序的合法性

题目如下:元素出栈、入栈顺序的合法性。如入栈的序列(1,2,3,4,5),出栈序列为(4,5,3,2,1)基本思路:  很直观的一种想法,建立一个辅助栈,把输入的第一个序列中的数字一次压入该辅助栈,并按照第二个序列的顺序从该栈中弹出数字。判断思路:遍历出栈顺序中的元素,有两种情况  :(1)如果元素是栈顶的元素,则pop出来;(2)如果不是栈顶元素,则根据入栈顺序将

2016-04-13 15:38:46 2473 1

原创 两个队列实现一个栈

基本思路:(1)队列不能对队尾进行删除操作,而栈要对栈底进行删除操作,这句需要将对队列进行一步一步的pop()操作,取到队尾元素,将其删除,为了保证前面的顺序还可以复原,那么就需要另一个队列,来存储元素(2)其实不用像两个栈实现一个队列一样,push()在一个栈中,而pop()必须在另外一个栈中,因为两个栈中的元素顺序是不一样的,而队列而言,两个队列来回到是的顺序是一样的,所以对那个进

2016-04-13 15:24:38 406

原创 两个栈实现一个队列

基本思路:队列有针对队头的操作,也就是说需要操作栈底的元素,直观的想到另外开辟一个栈,然后将前面的元素倒入新开辟的栈中,这样就可以操作栈的元素了,也就实现了对队头的操作大体思路基本一致,但是实现过程有小的不同,请开下面的详解:方法一:思路:有两个栈,s1作为存储空间,s2z作为临时缓存区,(1)入队时,将元素压入s1(2)出队时,将s1的元素逐个“倒入”(弹出并压入)s2,

2016-04-12 22:30:24 335

原创 栈的应用1;后缀表达式求解

1、求解原理:遇到操作数,放入栈中,遇到操作符,从栈中取两个操作数计算,计算的结果再放入栈中2、为什么不将操作数放入字符串中?因为挨着放,例如:“12345”,不知道是1、2、3、4、5,还是12345或者y也可以在字符串中加入逗号,例如“1,2,3,4,5”3.逆波兰表达式求值程序定义枚举:enum Type{ OP_NUM, OP_SYMBOL, ADD,

2016-04-08 13:24:43 559

原创 队列

队列1、队列值允许在表的队尾进行插入,在表对头进行删除。队列具有先进先出的特性。(队尾入数据,队头出数据)2、具体实现(单链表)节点定义:templatestruct Node{public: Node(const T& x) :_data(x) ,_next(NULL) {}public: T _data; Node* _next;};函数声明:

2016-04-08 13:07:28 275

原创

一、栈1、只允许在末端进行插入和删除的线性表。栈具有后进先出的特性2、实现方法(动态):函数声明如下:templateclass Stack{public: Stack(); ~Stack();public: void Push(const T& s); void Pop(); size_t Size(); bool Empty(); T& Top();//

2016-04-08 12:46:21 305

空空如也

空空如也

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

TA关注的人

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