自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 编程之美 2.1 求一个数的二进制表示中1的个数

<br />/**************问题描述************求二进制数中1的个数**********************************/#include<iostream>using namespace std;/****************解法一:直接除2*******************对num除以2,余数为1则result加1,时间复杂度为O(logv)v为num的二进制位数**************************

2011-04-30 02:02:00 1325

转载 编程之美3.9 重建二叉树

<br />问题描述:给定一个前序遍历和一个中序遍历,重建一棵二叉树。如:<br />前序:a b d c e f<br />中序:d b a e c f<br />a是根节点。<br />思路:根据前序,可以很快找出根节点a,然后根据中序,可以找出根节点a的左右子树,然后递归求a的左子树前序b d跟中序d b,a的右子树前序c e f跟中序e c f即可<br />#include<iostream>using namespace std;//定义树的长度#define TREELEN 6

2011-04-28 00:59:00 1670

转载 编程之美3.8 求二叉树中节点的最大距离

<br />转自:http://www.cnblogs.com/miloyip/archive/2010/02/25/1673114.html问题定义<br />如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的,我们姑且定义"距离"为两节点之间边的个数。写一个程序求一棵二叉树中相距最远的两个节点之间的距离。<br />书上的解法<br />书中对这个问题的分析是很清楚的,我尝试用自己的方式简短覆述。<br />计算一个二叉树的最大距离有两个情况:情况A: 路径经过左子树的最深节点,通过根节点,再到

2011-04-27 21:22:00 1265

转载 More Effective C++:指针与引用的区别

<br />转自:http://dev.yesky.com/495/2567995.shtml<br />指针与引用看上去完全不同(指针用操作符’*’和’->’,引用使用操作符’.’),但是它们似乎有相同的功能。指针与引用都是让你间接引用其他对象。你如何决定在什么时候使用指针,在什么时候使用引用呢?<br /><br />  首先,要认识到在任何情况下都不能用指向空值的引用。一个引用必须总是指向某些对象。因此如果你使用一个变量并让它指向一个对象,但是该变量在某些时候也可能不指向任何对象,这时你应该把变量声明

2011-04-22 00:37:00 612

原创 编程之美2.17 数组循环移位

<br />问题描述<br />把一个含有N个元素的数组循环右移K位,如K=4的时候abcd1234->1234abcd。一般考虑K>0的情况,即右移;同时K<N,当然K>=N的话可以通过K%=N得到一样的结果<br /> <br />解法思路详见代码注释<br />/****************************问题描述*****************************把一个含有N个元素的数组循环右移K位,如K=4的时候abcd1234->1234abcd一般考虑K>0的情况,即

2011-04-22 00:22:00 1364

原创 编程之美2.5 寻找最大的K个数

/********************问题描述************************有若干个无序的数(假设数目为N),如何选择其中最大的K个数*****************************************************/#include#include#includeusing namespace std;/***********************解法一:全部排序**************将输入的N的数排序,然后选出

2011-04-21 21:41:00 2476 2

原创 编程之美2.14扩展问题1 求子数组和的最大值(首尾可以相连)

<br />整体思路:<br />问题的解可以分为两种情况:<br />1)解没有跨过A[n-1]到A[0],即普通的求子数组和的最大值<br />2)解跨过A[n-1]到A[0]<br />对第二种情况,只要找到从A[0]开始和最大的一段(A[0],...,A[j])(0<=j<n)以及A[n-1]结尾的和最大的一段(A[i],...,A[n-1])(0<=i<n),那么第2种情况中,和的最大值M_2为:<br />M_2=A[i]+...A[n-1]+A[0]+...+A[j]<br />如果i<=j,

2011-04-21 11:15:00 2701 4

原创 编程之美2.14扩展问题2 求数组的子数组之和的最大值并给出子数组的起始终止位置

<br />求子数组之和的最大值采用之前的博客编程之美2.14 求数组的子数组之和的最大值中的动态规划方法,时间复杂度为O(N),在求nAll的过程中,记录子数组和最大值的那个数组的起始位置start跟终止位置end,下面的源码也分成了两种情况处理,一种情况是数组元素全为负的时候返回最大的负数,数组中除了0就是负数的情况则返回最后一次出现的那个0所在的位置(对应于程序的define RETURN_MAXMINUS块);另外一种情况是数组元素全为负数的时候返回0并置start跟end为-1,数组中除了0就是负

2011-04-21 00:21:00 2795

原创 编程之美2.14 求数组的子数组之和的最大值

<br />问题描述:<br />一个有N个整数元素的一维数组(A[0],A[1],...A(n-1),它包含很多子数组,求子数组之和的最大值,当数组元素全部为负的时候,有两种处理办法,第一种是返回0,第二种是返回数组中最大的负数。<br />解法1:<br />使用暴力法,假设最大的一段数组为A[i],...,A[j],则对i:=0~n-1 j:=i~n-1,遍历一遍,求出最大的Sum(i,j)即可<br />解法2:<br />使用分治法,数组(A[0],A[1],...A(n-1)分为长度相等的两段数

2011-04-20 20:05:00 2692 2

转载 c/c++中内存区域划分大总结

<br />转自:http://c.chinaitlab.com/cc/basic/200906/787241.html<br />一、 在c中分为这几个存储区<br />    1.栈 - 由编译器自动分配释放<br />    2.堆 - 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收<br />    3.全局区(静态区),全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。- 程序结束释放<br /> 

2011-04-18 22:18:00 604

转载 C++中的虚函数

虚函数的定义:  虚函数必须是类的非静态成员函数(且非构造函数),其访问权限是public(可以定义为private or proteceted, 但是对于多态来说,没有意义。),在基类的类定义中定义虚函数的一般形式:  virtual 函数返回值类型 虚函数名(形参表) { 函数体 }定义虚函数的限制:          (1)非类的成员函数不能定义为虚函数,类的成员函数中静态成员函数和构造函数也不能定义为虚函数,但可以将析构函数定义为虚函数。实际上,优秀的程序员常常把基类的析构函数定义为虚函数。因为,将

2011-04-17 00:09:00 958

原创 类指针与NULL

<br />给定如下代码,给出输出结果<br />class Person{public: void hi(){ cout<<"Hi"<<endl; }};class Intern{public: Intern(int a){ i=a; } void hi(){ cout<<"Hi "<<i<<endl; }private: int i;};int main(){ Person *p=new Person;

2011-04-16 01:05:00 1066

原创 考察继承、虚函数、sizeof、构造函数析构函数的一道面试题

<br />给定如下代码,求输出结果<br />class A{public: A(){ cout<<"A::A()"<<endl; } ~A(){ cout<<"A::~A()"<<endl; }};class B:public A{public: B():c(0){ cout<<"B::B()"<<endl; fun(); } virtual ~B(){ cout<<"B::~B()"<<endl; } void te

2011-04-16 00:18:00 2618 1

转载 解决分配问题的匈牙利算法

<br />匈牙利方法是为解决所谓“分配问题”,“指派问题”等数学问题的方法。这类问题的一般性叙述为:  <br />  有n个问题要分配给n个人去完成。第i个人完成第j项任务的成本为Cij。问:如何分配任务,能使总成本最小? 应用举例<br />  引入变量Xij,Xij的取值表示:  <br />  Xij=1,指派第个人去完成第j项任务;  <br />  Xij=0,不指派第个人去完成第j项任务。  <br />  假如五个人完成五项任务,“成本矩阵”为:  <br />  12     7    

2011-04-03 14:59:00 8899

转载 awk使用手册

<br />什么是awk? <br /><br />你可能对UNIX比较熟悉,但你可能对awk很陌生,这一点也不奇怪,的确,与其优秀的功能相比,awk还远没达到它应有的知名度。awk是什么?与其它大多数UNIX命令不同的是,从名字上看,我们不可能知道awk的功能:它既不是具有独立意义的英文单词,也不是几个相关单词的缩写。事实上,awk是三个人名的缩写,他们是:Aho、(Peter)Weinberg和(Brain)Kernighan。正是这三个人创造了awk---一个优秀的样式扫描与处理工具。 <br /><

2011-04-03 13:07:00 563

空空如也

空空如也

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

TA关注的人

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