自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 this指针

它是指向本类对象的指针,他的值是当前被调用的成员函数所在的对象的起始地址。所谓“调用对象a的成员函数f”,实际上是在调用成员函数f时使this指针指向对象a,从而访问对象a的成员。...

2018-05-30 16:59:05 144

原创 纯虚函数和抽象类

4.1纯虚函数使用背景:有时在基类中将某一成员函数定为虚函数,并不是基类本身的要求,而是考虑到派生类的需要,在基类中预留一个函数名,具体功能留给派生类根据需要去定义。声明纯虚函数:virtual 函数类型 函数名(参数列表)=0;注意:1)纯虚函数没有函数体2)最后面的“=0”并不表示函数返回值为0,它只起形式上的作用,告诉编译系统“这是纯虚函数”3)声明语句,最后面应该有分号。纯虚函数的功能:1...

2018-05-30 16:43:28 745

原创 静态关联和动态关联

3.2静态关联与动态关联关联:确定调用的具体对象的过程。(指把一个函数名和一个类对象捆绑在一起,建立关联)。静态关联:在编译时即可确定其调用的虚函数属于哪一个类,例如函数重载和通过对象名调用的虚函数。由于是在运行前进行关联的,又称为早期关联。动态关联:编译系统把他放在运行阶段进行处理,在运行阶段确定关联关系。也叫滞后关联。3.3 在什么情况下应当声明虚函数使用虚函数的注意:1)只能用virtual...

2018-05-30 15:29:48 4909

原创 利用虚函数实现动态多态性

12.3.1 虚函数的作用能否用同一个调用形式来调用派生类和基类的同名函数。在程序中,不是通过不同的对象名去调用不同派生层次中的同名函数,而是通过指针调用它们。c++中的虚函数就是用来解决动态多态问题的。所谓虚函数,就是在基类声明函数是虚拟的,并不是实际存在的函数,然后在派生类中才正式定义此函数。下面给出一个例子#include <iostream>#include <stri...

2018-05-28 17:48:09 6675

原创 c++ 类的继承与派生 随便写的练习

#include <iostream>using namespace std;const double pi = 3.14;class Point{protected: double x,y;public: Point( double xx = 0, double yy = 0 ): x(xx), y(yy) {} void SetPoint( do...

2018-05-28 16:13:06 405

原创 多态性与虚函数

12.1多态性的概念多态性是面向对象程序设计的一个重要特征。多态性:向不同的对象发送同一消息,不同的对象在接受时会产生不同的行为。例如函数的重载和运算符重载都是多态现象。在c++中,多态性的表现形式之一是:具有不同功能的函数可以用同一函数名,这样就可以实现一个用一个函数名调用不同内容的函数。从系统实现的角度来看,多态性分为两类:静态多态性和动态多态性。静态多态性:通过函数重载完成,由函数重载和运算...

2018-05-28 15:09:45 278

原创 程序设计MOOC 奇怪的类复制

#include <iostream>using namespace std;class Sample{public: int v; Sample( const int vv = 0 ) { v = vv; } Sample( const Sample & a ) { v = a.v + 2...

2018-05-27 20:24:59 364

原创 程序设计MOOC 学生信息处理程序

#include <iostream>#include <string>#include <cstdio>#include <cstring>#include <sstream>#include <cstdlib>using namespace std;class Student{private: ...

2018-05-27 19:58:16 546 1

原创 程序设计MOOC 神秘的数组初始化

#include <iostream>using namespace std;int main(){ int * a[] = { NULL, NULL, new int[1], new int[6] }; *a[2] = 123; a[3][5] = 456; if(! a[0] ) { ...

2018-05-27 19:40:25 646

原创 重载运算符 程序设计实习MOOC 全面的MyString

#include <cstdlib>#include <iostream>using namespace std;int strlen(const char * s){ int i = 0; for(; s[i]; ++i); return i;}void strcpy(char * d,const char * s){ int...

2018-05-27 19:26:45 978

原创 派生类的构造函数和析构函数

前言:在设计派生类的构造函数时,希望执行派生类的构造函数时,使派生类的数据成员和基类的数据成员同时被初始化。解决这个问题的思路是:在执行派生类的构造函数时,调用基类的构造函数。5.1简单的派生类的构造函数派生类构造函数一般形式为派生类构造函数名(总参数表):基类构造函数名(参数表){派生类中新增数据成员初始化语句}总参数表包括基类构造函数所需的参数和对派生类新增的数据成员初始化所需的参数。注意:派...

2018-05-27 16:57:54 1476

原创 类的继承与派生(二)

4.派生类成员的访问属性讨论访问属性时,一般考虑以下几种情况1.基类成员函数访问基类成员。(ok)2.派生类的成员函数访问派生类自己增加的成员。(ok)3.基类的成员函数访问派生类的成员(no)4.派生类的成员函数访问基类的成员5.派生类外访问派生类的成员(根据公有成员或者私有成员来定)6.在派生类外访问基类成员不同的继承方式决定了基类成员在派生类中的访问属性(1)公用继承基类的公有成员和保护成员...

2018-05-27 12:04:11 352

原创 类的继承与派生(一)

继承性是面向对象设计的最重要特征,实现了软件的可重用性。1.继承与派生的概念在c++中,所谓继承就是在一个已存在的类的基础上建立一个新的类。已存在的类称为基类或父类,新建立的类称为派生类或者子类。一个新类从已有的类那里获得其已有的特性,这种现象称为类的继承。从已有的类产生一个新类,称为类的派生。继承的分类:1.一个派生类只从一个基类派生,称为单继承。2.一个派生类有两个或者多个基类的称为多重继承。...

2018-05-27 11:44:03 2855

原创 leetcode 乘积最大子序列

由于乘积时会负负得正,所以需要记录一个正的最大值和一个负的最小值。状态Posdp[i]:表示以第i个元素为结尾的子序列的最大乘积状态Negdp[i]: 表示第i个元素为结尾的子序列的最小乘积状态转移方程: Posdp[i] = max( nums[i], max( nums[i] * Posdp[i-1], nums[i] * Negdp[i-1] ) ); ...

2018-05-27 10:25:25 1296

原创 leetcode 最大子序和

状态:dp[i]表示以第i个元素结尾的连续子数组的最大和状态转移方程:dp[i] = max( 0, dp[i-1] ) + nums[i];#include <vector>using namespace std;class Solution{public: int maxSubArray(vector<int>& nums) { ...

2018-05-26 20:42:08 343

原创 leetcode 使用最小花费爬楼梯

状态:dp[i]表示到达第i个阶梯需要的最小花费,小技巧是令cost[n] = 0 ,最后返回dp[n]即可状态转移方程:dp[i] = min( dp[i-2], dp[i-1] ) + cost[i];#include <vector>using namespace std;class Solution {public: int minCostClimbingStai...

2018-05-26 20:18:50 1731 1

原创 leetcode 买卖股票的最佳时机Ⅱ

因为可以进行多次买卖,这是一个贪心问题,只要当天股票价格比前一天股票价格上涨,便卖出#include <vector>using namespace std;class Solution {public: int maxProfit(vector<int>& prices) { int n = prices.size(); ...

2018-05-24 10:11:18 205 1

原创 leetcode 不同路径Ⅱ

动态规划(深搜会超时)class Solution{public: int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) { int dp[105][105]; int n = obstacleGrid[0].size();...

2018-05-23 22:01:35 456

原创 解码方法 leetcode

类似于爬楼梯string s;using namespace std;class Solution {public: int numDecodings(string s) { if( s.empty() || s.size() >= 1 && s[0] == '0' ) { return 0; ...

2018-05-23 21:33:24 284

原创 构造函数

成员函数的一种①名字与类名相同,可以有参数,不能有返回值(void也不行)②作用是对对象进行初始化,如给成员变量赋值。③如果定义类时没写构造函数,则编译器生成一个默认的无参数的构造函数。默认构造函数为参数,不做任何操作。如果定义了构造函数,则编译器不生成默认的无参数的构造函数。对象生成时构造函数自动被调用。对象一旦生成,就再也不能在其上执行构造函数一个类可以有多个构造函数。参数个数和参数类型不同 ...

2018-05-22 20:38:06 140

原创 类和对象的基本概念二

1.类的成员函数的函数体和类的定义分开来写。写法:函数类型  类名::函数名{函数体}表明后面的函数是类的成员函数而非普通函数。那么,一定要通过对象或对象的指针或对象的引用才能调用。2.类成员的可访问范围范围访问关键字:①private:私有成员,只能在成员函数内访问。②public:公有成员,可以在任何地方访问。③protected:保护成员(如果某个成员前面没有关键字,则缺省地被认为是私有成员...

2018-05-22 19:45:09 170

原创 类和对象的基本概念

结构化程序数据结构 + 算法不足之处:1. 结构化程序设计中,函数和其所操作的数据结构没有直观的联系。2.随着程序规模的增加,程序逐渐难以理解,很难一下子看出来。例如:①某个数据结构到底有哪些函数可以对它进行操作。②某个函数到底用来操作哪些数据结构的。③任何两个函数之间存在怎样的调用关系?面向对象的程序设计类 + 类 +类面向对象的程序设计方法:1.将某类客观事物共同特点(属性)归纳出来,形成一个...

2018-05-20 21:14:55 594

原创 内联函数 和 重载函数 和 缺省函数

内联函数目的:函数调用是有时间开销的(参数入栈、函数地址入栈)。如果函数本身只有几条语句,执行非常快·,而且函数会被反复执行很多次,相比之下,调用函数的开销会显得特别大。机理:引入了内联函数机制,编译器处理对内联函数的调用语句时,是将整个函数的代码插入到调用语句中,而不会产生调用函数的语句。内联函数的定义:在函数定义前加"inline"关键字inline int Max( int a, int b...

2018-05-20 19:32:45 211

原创 种类并查集 食物链

#include <stdio.h>#include <iostream>#include <stack>#include <string>#include <set>#include <memory.h>#include <math.h>#include <algorithm&

2018-05-20 10:07:59 280

原创 种类并查集 A Bug's Life

跟发现它抓住它完全一样。注意:当发现同性恋时不能直接break,因为还有输入数据#include <stdio.h>#include <iostream>#include <stack>#include <string>#include <set>#include <memory.h>#include <ma...

2018-05-16 16:54:02 473

原创 种类并查集 发现它 抓住它

tag[i] 表示 i 结点 与其父节点是否在同一个集合中(表示的是一种相对关系)GetFather时:压缩路径,同时更新tag[i]合并时:更新tag[father[i]]#include <stdio.h>#include <iostream>#include <stack>#include <string>#include <se...

2018-05-16 15:37:06 1422

原创 贪心 Rainbow的商店

贪心策略是把商品按价值从大到小排序,价值相同的过期日期大的在前面,设置一个标志数组visited,从过期日期向前依次安排卖的日期#include <stdio.h>#include <iostream>#include <stack>#include <string>#include <set>#include <memo...

2018-05-15 17:49:33 421

原创 促销活动

注意:因为账单金额有可能重复,所以需要使用multiset,另外结果会爆int#include <stdio.h>#include <iostream>#include <stack>#include <string>#include <set>#include <memory.h>using namespace ...

2018-05-13 19:31:58 264

原创 双队列·

维护一个平衡二叉树#include <stdio.h>#include <iostream>#include <stack>#include <string>#include <set>using namespace std;struct Guest{ int P,K; Guest( int pp = 0, ...

2018-05-13 19:05:17 183

原创 文本二叉树

点击打开链接建立二叉树的一种方式#include <stdio.h>#include <iostream>#include <stack>#include <string>using namespace std;string s;int kase;typedef struct node{ char data; node...

2018-05-13 11:03:58 324

原创 二叉树的操作

数组表示法#include <iostream>#include <malloc.h>#include <queue>#include <string>#include <string.h>#include <iomanip>#include <stdio.h>#include <que

2018-05-12 20:21:55 122

原创 赫夫曼树 贪心

贪心问题,每次把权重最小的连接成新的树#include <iostream>#include <malloc.h>#include <queue>#include <string>#include <string.h>#include <iomanip>#include <stdio.h>#inclu

2018-05-12 19:03:12 163

原创 二叉搜索树的各种操作

#include <iostream>#include <malloc.h>#include <queue>#include <string>#include <string.h>#include <iomanip>#include <stdio.h>using namespace std;int

2018-05-12 18:47:04 106

原创 实现堆结构

注意每次清空优先级队列即可#include <iostream>#include <memory.h>#include <vector>#include <queue>#include <stdio.h>#include <algorithm>#include <unordered_set>#incl

2018-05-11 10:49:25 566

原创 社交网络

用字符串来读入数据, 裸的FLOYD#include <iostream>#include <memory.h>#include <vector>#include <queue>#include <stdio.h>#include <algorithm>#include <unordered_set>

2018-05-09 21:46:24 424

原创 拓扑排序

思路:每次删去入度为零的点,与此同时,该点的每一个邻接点的入度减一,直至删去N个·点为止。注意break;#include <iostream>#include <memory.h>#include <vector>#include <queue>#include <stdio.h>#include <algorithm&...

2018-05-09 21:27:27 143

原创 百练oj 拯救公主

广搜,值得学习的地方时是用二进制数来存储已获得的钻石种类。#include <iostream>#include <memory.h>#include <vector>#include <queue>#include <stdio.h>#include <algorithm>#include <unorder...

2018-05-09 20:56:57 808

原创 广搜 Meteor Shower poj 3669

题目大意:巨大流星雨即将袭来。每个流星会对击中的地方以及周围(上下左右四格)造成破坏。Bessie开始时位于(0, 0)位置,并希望逃到一处不会被袭击到的地方(在第一象限内)。已知每移动一格需要1个时间单位,被流星破坏后的地方不能再进入。给出M个流星在T时刻击中的地方(X, Y),问Bessie能否逃到安全的地方,若能输出最短时间,否则输出-1。裸的广搜,注意判重即可#include <io...

2018-05-09 16:32:44 140

原创 poj 1797 Heavy Transportation

题意:一条通路上的承重定义为这条通路上经过的所有路径承重的最小值,要去求从1到N的所有通路中的最大承重dijstra 每次收录最大承重的点 更新条件为、dist[i] = max( dist[i], min( Max, G[MaxV][i] ) );#include <iostream>#include <memory.h>#include <string>...

2018-05-07 20:47:51 166

原创 poj 2253 frogger

有两只青蛙和若干块石头,现在已知这些东西的坐标,两只青蛙A坐标和青蛙B坐标是第一个和第二个坐标,现在A青蛙想要到B青蛙那里去,并且A青蛙可以借助任意石头的跳跃,而从A到B有若干通路,问从A到B的所有通路上的最大边,比如有  有两条通路  1(4)5 (3)2 代表1到5之间的边为4,  5到2之间的边为3,那么该条通路跳跃范围(两块石头之间的最大距离)为 4,  另一条通路 1(6) 4(1) 2...

2018-05-07 19:46:29 137

空空如也

空空如也

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

TA关注的人

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