自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 C++中指针和引用的区别

下面用通俗易懂的话来概述一下:指针-对于一个类型T,T*就是指向T的指针类型,也即一个T*类型的变量能够保存一个T对象的地址,而类型T是可以加一些限定词的,如const、volatile等等。见下图,所示指针的含义:引用-引用是一个对象的别名,主要用于函数参数和返回值类型,符号X&表示X类型的引用。见下图,所示引用的含义:2、指针和引用的区别

2014-10-18 14:40:32 688 1

原创 C语言 gets()和scanf()函数的区别

scanf( )函数和gets( )函数都可用于输入字符串,但在功能上有区别。若想从键盘上输入字符串"hi hello",则应该使用__gets__函数。gets可以接收空格;而scanf遇到空格、回车和Tab键都会认为输入结束,所有它不能接收空格。char string[15]; gets(string); /*遇到回车认为输入结束*/scanf("%s",string)

2014-09-30 22:55:57 667

原创 进制转换求余数

用下面这种方法,可bimiando{buffer[size++]=c%m;c=c/m;}while(c!=0);

2014-09-17 10:45:53 798

原创 题目1458:汉诺塔III

题目描述:约19世纪末,在欧州的商店中出售一种智力玩具,在一块铜板上有三根杆,最左边的杆上自上而下、由小到大顺序串着由64个圆盘构成的塔。目的是将最左边杆上的盘全部移到右边的杆上,条件是一次只能移动一个盘,且不允许大盘放在小盘的上面。现在我们改变游戏的玩法,不允许直接从最左(右)边移到最右(左)边(每次移动一定是移到中间杆或从中间移出),也不允许大盘放到下盘的上面。Daisy已经做过原来的

2014-09-14 23:30:30 643

转载 汉诺塔-递归算法

个人觉得汉诺塔这个递归算法比电子老鼠的难了一些,不过一旦理解了也还是可以的,其实网上也有很多代码,可以直接参考。记得大一开始时就做过汉诺塔的习题,但是那时代码写得很长很长,也是不理解递归的结果。现在想起来汉诺塔的算法就3个步骤:第一,把a上的n-1个盘通过c移动到b。第二,把a上的最下面的盘移到c。第三,因为n-1个盘全在b上了,所以把b当做a重复以上步骤就好了。所以算法看起来就简单多了。不过,思

2014-09-14 23:13:12 548

原创 递归思想

1.汉诺塔问题详细解答参考视频:

2014-09-14 16:47:36 334

原创 (转)函数后面加const

参考:http://blog.163.com/tieying5566@126/blog/static/64215171201041194642649/

2014-09-06 12:51:14 409

转载 C++运算符重载讲解与经典实例

C++中预定义的运算符的操作对象只能是基本数据类型,实际上,对于很多用户自定义类型,也需要有类似的运算操作。例如: class complex {  public:   complex(double r=0.0,double I=0.0){real=r;imag=I;}   void display();  private:   double real;   dou

2014-09-02 20:24:49 364

原创 const引用参数

在C++中,很多时候不希望函数调用时使用值传递(这样做需要得到实参的一个拷贝,降低了效率),而使用引用参数(引用本质上就是指针)。由于对引用参数值的改变就是对实参值的改变,有时候不希望改变实参的值,为了防止出错,而使用const 引用参数。这样既有引用参数的效率,而又不会改变实参的值。 例如:一个int型的容器,求出它的平均值得运算就不需要改变容器而元素的值。 可以这样做:int me

2014-09-02 20:20:07 501

转载 STL map用法详解

原文地址:说明:如果你具备一定的C++ template知识,即使你没有接触过STL,这个文章你也应该可能较轻易的看懂。本人水平有限,不当之处,望大家辅正。 一.Map概述 Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供

2014-08-28 21:29:22 355

转载 C printf 格式输出

C语言中printf 格式输出Technorati 标签: c,printf,输出格式 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

2014-08-18 21:49:17 1012

原创 日期类-求星期几

题目描述:We now use the Gregorian style of dating in Russia. The leap years are years with number divisible by 4 but not divisible by 100, or divisible by 400.For example, years 2004, 2180 and 2400

2014-08-17 23:01:31 495

原创 日期类-日期差值

题目描述:有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天输入:有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD输出:每组数据输出一行,即日期差值样例输入:2011041220110422样例输出:11#includebool isLeapYear(i

2014-08-17 21:55:03 407

原创 判断两个二叉搜索树序列是否一致

题目描述:判断两序列是否为同一二叉搜索树序列输入:开始一个数n,(1接下去一行是一个序列,序列长度小于10,包含(0~9)的数字,没有重复数字,根据这个序列可以构造出一颗二叉搜索树。接下去的n行有n个序列,每个序列格式跟第一个序列一样,请判断这两个序列是否能组成同一颗二叉搜索树。输出:如果序列相同则输出YES,否则输出NO样例输入:2

2014-08-16 21:46:20 1039

原创 二叉排序树的创建

题目描述:    输入一系列整数,建立二叉排序数,并进行前序,中序,后序遍历。输入:    输入第一行包括一个整数n(1    接下来的一行包括n个整数。输出:    可能有多组测试数据,对于每组数据,将题目所给数据建立一个二叉排序树,并对二叉排序树进行前序、中序和后序遍历。    每种遍历结果输出一行。每行最后一个数据之后有一个空格。

2014-08-16 19:12:08 938

转载 二叉树的创建和释放

/********************************************************** Description:参数传递:C++ 二叉树的实现以及指针使用注意事项* Author:charley* DateTime:2010-12-8 11:00* Compile Environment:win7+vs2008***********************

2014-08-16 18:09:26 4277 1

原创 题目1078:二叉树遍历(根据前序和中序遍历结果,获得后序遍历)

题目描述:二叉树的前序、中序、后序遍历的定义:前序遍历:对任一子树,先访问跟,然后遍历其左子树,最后遍历其右子树;中序遍历:对任一子树,先遍历其左子树,然后访问根,最后遍历其右子树;后序遍历:对任一子树,先遍历其左子树,然后遍历其右子树,最后访问根。给定一棵二叉树的前序遍历和中序遍历,求其后序遍历(提示:给定前序遍历与中序遍历能够唯一确定后序遍历)。输入:

2014-08-15 22:20:27 822

转载 遍历二叉树的各种操作(非递归遍历)

转载请标明出处,原文地址:http://blog.csdn.net/hackbuteer1/article/details/6583988

2014-08-13 18:11:52 394

原创 九度题目-1107:搬水果

题目描述:    在一个果园里,小明已经将所有的水果打了下来,并按水果的不同种类分成了若干堆,小明决定把所有的水果合成一堆。每一次合并,小明可以把两堆水果合并到一起,消耗的体力等于两堆水果的重量之和。当然经过 n‐1 次合并之后,就变成一堆了。小明在合并水果时总共消耗的体力等于每次合并所耗体力之和。    假定每个水果重量都为 1,并且已知水果的种类数和每种水果的数目,你的任务是设

2014-08-07 20:41:46 451

原创 九度题目1172_哈夫曼树

题目描述:哈夫曼树,第一行输入一个数n,表示叶结点的个数。需要用这些叶结点生成哈夫曼树,根据哈夫曼树的概念,这些结点有权值,即weight,题目需要输出所有结点的值与权值的乘积之和。输入:输入有多组数据。每组第一行输入一个数n,接着输入n个叶节点(叶节点权值不超过100,2输出:输出权值。样例输入:5 1 2 2 5 9

2014-08-07 19:57:35 410

原创 哈夫曼树与哈夫曼编码

定义:给定n个权值作为n个叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。

2014-08-05 21:57:23 650

原创 堆栈的使用

题目描述:    堆栈是一种基本的数据结构。堆栈具有两种基本操作方式,push 和 pop。Push一个值会将其压入栈顶,而 pop 则会将栈顶的值弹出。现在我们就来验证一下堆栈的使用。输入:     对于每组测试数据,第一行是一个正整数 n,0输出:    对于每组测试数据,根据其中的命令字符来处理堆栈;并对所有的'A’操作,输出当时栈顶的值,每个

2014-08-03 23:03:42 406

原创 栈计算表达式

题目描述:对于一个不存在括号的表达式进行计算输入:存在多种数据,每组数据一行,表达式不存在空格输出:输出结果样例输入:6/2+3+3*4样例输出:18

2014-08-03 21:47:00 431

原创 To Fill or Not to Fill加油站问题

题目描述:With highways available, driving a car from Hangzhou to any other city is easy. But since the tank capacity of a car is limited, we have to find gas stations on the way from time to time. Dif

2014-08-02 20:59:54 563

原创 用栈对队列排序

给定一个队列,里面已有 N 个元素,此外还有一个空的栈(可认为是无限大小的)。现在可以进行一系列操作,每次操作允许执行下列两种操作之一:把元素从队列头拿出来,塞到队列尾或栈中把元素从栈顶拿出来,塞进队列尾给定队列原来的状态和目标状态,求问是否能够将原来的队列通过进行以上一系列操作变为目标状态。输入格式一个整数 T,表示有多少组测试数据。接下来的 T 组测试数据,每组测试数据

2014-07-28 22:01:43 1050

原创 广度优先搜索

jianjie广度优先算法(Breadth-First-Search),又称作宽度优先搜索,或横向优先搜索,简称BFS,是一种图形搜索演算法。简单的说,BFS是从根节点开始,沿着树的宽度遍历树的节点,如果发现目标,则演算终止。广度优先搜索的实现一般采用open-closed表。

2014-07-28 21:11:02 769

原创 矿工冒险记

现在你控制的人物在一个N×M的场地中,左上角的方格为 (0, 0),右下角为 (N – 1, M – 1),你一开始的位置在 (SX, SY),你家的位置则在 (EX, EY)。身为一个矿工,你身上早就有了好几组铁和钻石,所以你正匆忙地赶回家里。但是有某些格子被设下了陷阱,如果走到上面就会粉身碎骨,立刻 Game Over。你当然不想 Game Over,所以你要避开这些格子。假设每单位时

2014-07-28 21:05:34 480

原创 黑白棋

黑白棋是一种群众喜闻乐见的棋类游戏,双方各执黑白一色棋子,在 8 * 8 的棋盘上进行比赛(棋盘初始布局如下图),双方轮流下子,黑棋先手。每次行动,玩家可以选择在棋盘中任意的有效格子处下子。在落子后,会进行八个方向的翻转操作。翻转操作的过程是这样的:以刚放下的那颗棋子为中心(简称为中心棋子),在上、下、左、右、左上、左下、右上、右下八个射线方向内,分别寻找一个离中心棋子最近的己方颜色的

2014-07-28 10:39:43 1102

原创 归并排序求逆序对

现在给定一个有 N 个数的数列 Ai。若对于 i j,有 Ai > Aj,则称 (i, j) 为数列的一个逆序对。例如, 有五个逆序对,分别是 (1, 5), (2, 5), (3, 4), (3, 5), (4, 5)。现在请你求出一个给定数列的逆序对个数。提示:排序算法可以解决这个问题。输入格式一个整数 T,表示有多少组测试数据。每组测试数据第一行是一个正整数 N 

2014-07-27 21:20:25 511

原创 int, long, long long的范围和使用

unsigned   int   0~4294967295   int   2147483648~2147483647 unsigned long 0~4294967295long   2147483648~2147483647long long的最大值:9223372036854775807long long的最小值:-9223372036854775808unsigne

2014-07-27 20:00:44 3704

原创 过河问题

现在有 N 个人想过河,但他们只有一条能容纳两个人的小船,且必须有一个人划船。每个人都有一个过河的时间,两个人在船上时,过河时间取决于较慢的一人。现在请问要让 N 个人过河最少需要花多少时间?输入格式一个整数 T,表示有多少组测试数据。接下来的 T 组测试数据,每组测试数据第一行是一个正整数 N (1 N 接下来一行有 N 个数,第 i 个数表示第 i 个人的过河时间 Ti (

2014-07-27 12:39:49 587

原创 最小字符串

给定长度为 N 的字符串 S,现在要构造一个长度为 N 的字符串 T。T 开始的时候是空串,然后反复进行以下两个操作之一,直至 S 为空串:从 S 的头部删除一个字符,加到 T 的尾部从 S 的尾部删除一个字符,加到 T 的尾部求字典序尽可能小的字符串 T。输入格式一个整数 T,表示有多少组测试数据。接下来的 T 组测试数据,每组测试数据第一行是一个正整数 N (0 N 

2014-07-26 22:29:40 1862

原创 夜跑

题目:cao

2014-07-25 21:51:05 398

转载 c++ string操作

1、string类的构造函数eg:string(const char *s); // 用c字符串初始化string(int n, char c); // 用n个字符c初始化此外,string类还支持默认构造函数和复制构造函数,如string s1; string s2 = “hello”; 都是正确写法。当构造的string太长而无法表达时会抛出length

2014-07-23 00:07:45 395

转载 队列归并排序

题目描述:给定一个队列,请用一系列合法的队列操作函数,包括:(1) int IsEmptyQ(Queue Q)(2) void AddQ(Queue Q, ElementType item)(3) ElementType DeleteQ(Queue Q)将队列中的元素从小到大排序。注意:不能直接通过数组下标直接访问队列(数组)中的元素。可以使用一个辅助队列。

2014-07-22 19:53:57 1548

原创 3-09. 队列中的元素排序(20)

3-09. 队列中的元素排序(20)时间限制100 ms内存限制32000 kB代码长度限制8000 B判题程序Standard给定一个队列,请用一系列合法的队列操作函数,包括:(1) int IsEmptyQ(Queue Q)(2) void AddQ(Qu

2014-07-22 19:48:13 2126

原创 归并排序数组实现之递归和非递归方法

归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的,然后再把有序子序列合并为整体有序序列。归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序

2014-07-22 14:20:06 598

原创 3-08. 堆栈模拟队列(25)

3-08. 堆栈模拟队列(25)时间限制400 ms内存限制32000 kB代码长度限制8000 B判题程序Standard设已知有两个堆栈S1和S2,请用这两个堆栈模拟出一个队列Q。所谓用堆栈模拟队列,实际上就是通过调用堆栈的下列操作函数:(1) int

2014-07-21 18:21:57 1607

转载 用两个栈(Stack)实现一个队列(Queue)

用两个栈实现一个队列两年前从网上看到一道面试题:用两个栈(Stack)实现一个队列(Queue)。觉得不错,就经常拿来面试,几年下来,做此题的应该有几十人了。通过对面试者的表现和反应,有一些统计和感受,在此做个小结。 用C++描述,题目大致是这样的: 已知下面Stack类及其3个方法Push、Pop和 Count,请用2个Stack实现Queue类的入队(Enqueue

2014-07-21 13:39:16 1393 1

原创 3-07. 求前缀表达式的值(25)

3-07. 求前缀表达式的值(25)时间限制400 ms内存限制32000 kB代码长度限制8000 B判题程序Standard算术表达式有前缀表示法、中缀表示法和后缀表示法等形式。前缀表达式指二元运算符位于两个运算数之前,例如2+3*(7-4)+8/4的前缀表达式是:+

2014-07-21 00:23:48 4643

空空如也

空空如也

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

TA关注的人

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