自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

SunDancer

阳光下的舞者,灵动的舞者,思想的舞者

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

原创 编程之美 2.18 数组分割

题目: 有一个无序、元素个数为2n的正整数数组,要求:如何能把这个数组分割为元素个数为n的两个数组,并使两个子数组的和最接近。 运用动态规划的方法求解此问题, 找最接近数组和sum的一半的一个n个数据的数列。 找小于sum/2的一个数组。分配数组isOk[sum/2],  isOk[i] 表示是否存在序列之和为i分配数组vv_data[sum/2], vv_data[i]表述序

2011-10-26 20:32:25 2005 2

原创 29.栈的push、pop 序列

29.栈的push、pop 序列题目:输入两个整数序列。其中一个序列表示栈的push 顺序,判断另一个序列有没有可能是对应的pop 顺序。为了简单起见,我们假设push 序列的任意两个整数都是不相等的。比如输入的push 序列是1、2、3、4、5,那么4、5、3、

2011-07-29 17:39:03 912

原创 第25 题:写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)

第25 题:写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)功能:在字符串中找出连续最长的数字串,并把这个串的长度返回,并把这个最长数字串付给其中一个函数参数outputstr 所指内存。例如:"abcd1234

2011-07-29 15:29:51 2616

原创 第18 题:题目:n 个数字(0,1,…,n-1)形成一个圆圈,从数字0 开始,

第18 题:题目:n 个数字(0,1,…,n-1)形成一个圆圈,从数字0 开始,每次从这个圆圈中删除第m 个数字(第一个为当前数字本身,第二个为当前数字的下一个数字)。当一个数字删除后,从被删除数字的下一个继续删除第m 个数字。求出在这个圆圈中剩下的最后一个数字。 使用数组来存储

2011-07-27 13:43:23 1851

原创 第17 题:题目:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。

第17 题:题目:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。分析:这道题是2006 年google 的一道笔试题。 申请26个数据结构来记录每个字符出现的次数及最后一个的位置。如果字符包含数字或者其他符号的话,可以申请256个该类型数组结构来存

2011-07-27 13:39:11 3627

原创 auto_ptr 源码

template class auto_ptr{private: _Tp *m_ptr;public: typedef _Tp elementType; // object life cycle explicit auto_ptr(elemen

2011-07-26 19:27:15 752

原创 第16 题:题目(微软):输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。

第16 题:题目(微软):输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。例如输入8/ \6 10/ \ / \5 7 9 11输出8 6 10 5 7 9 11。   使用队列数据结构,并且在每一层的末尾插入一个节点表示换行。代码:#include

2011-07-26 13:47:33 1314

原创 第15 题:题目:输入一颗二元查找树,将该树转换为它的镜像

第15 题:题目:输入一颗二元查找树,将该树转换为它的镜像,即在转换后的二元查找树中,左子树的结点都大于右子树的结点。用递归和循环两种方法完成树的镜像转换。例如输入:8/ \6 10/\ /\5 7 9 11输出:8/ \10 6/\ /\11 9 7 5定义二元查找树的结点为:

2011-07-26 13:19:15 1326

原创 第14 题:题目:输入一个已经按升序排序过的数组和一个数字

第14 题:题目:输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。例如输入数组1、2、4、7、11、15 和数字15。由于4+11=15,因此输出4 和1

2011-07-26 10:24:11 1358

原创 11、求二叉树中节点的最大距离...

第11 题求二叉树中节点的最大距离...如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的,我们姑且定义"距离"为两节点之间边的个数。写一个程序,求一棵二叉树中相距最远的两个节点之间的距离。 /* 分析: 1、具有最大距离的两个节点必定是叶子节点,如果不是叶子节点

2011-07-26 09:51:54 1508

原创 10、翻转句子中单词的顺序

第10 题翻转句子中单词的顺序。题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。例如输入“I am a student.”,则输出“student. a am I”。 先对每个单词进行翻转,然后

2011-07-22 17:31:26 514

原创 9、判断整数序列是不是二元查找树的后序遍历结果

第9 题判断整数序列是不是二元查找树的后序遍历结果题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。如果是返回true,否则返回false。例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果:8/ \6 10/ \ / \5 7 9

2011-07-22 16:29:05 629

原创 3、求子数组的最大和

3.求子数组的最大和题目:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10,

2011-07-20 09:58:41 721

原创 2、设计包含min 函数的栈

2.设计包含min 函数的栈。定义栈的数据结构,要求添加一个min 函数,能够得到栈的最小元素。要求函数min、push 以及pop 的时间复杂度都是O(1)。 思路: 1、min,push,pop都需要时间复杂度为O(1), 所以树,堆等数据结构都不能用 2、栈只有通过push

2011-07-19 20:11:26 2187 1

原创 1、把二元查找树转变成排序的双向链表

1. 把二元查找树转变成排序的双向链表题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点,只调整指针的指向。10/ \6 14/ \ / \4 8 12 16转换成双向链表4=6=8=10=12=14=16。首先我们定义的二元查找树节点的数

2011-07-19 20:08:00 1313

原创 编程之美 2.8 找符合条件的正数

题目: 任意给出一个正整数N,求一个最小的正整数M(M>1),使得N * M 的十进制表示形式里只含有1和0. method 1:如书中给出的,最最直接的方法就是,从M =2,开始一次的加1,测试乘积是否满足条件。伪代码:for (int M = 2; ; M++){ p

2011-07-15 10:10:27 1508 1

原创 模板学习

有趣的数组类 模板 template class CSimpleArrayEqualHelper{ static bool isEqual(const T& t1, const T& t2) { return (t1 == t2); }};t

2011-07-07 17:38:14 747

原创 逆序数--二分法

逆序数:在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。一个排列中逆序的总数就称为这个排列的逆序数。 #include "stdafx.h"#include #include using namespace std;class ReversedOrder{public: ReversedOrder

2011-06-23 14:07:00 804

原创 有关智能指针

// C++ Primer 14.6 ScrPtr类是一个只供ScreenPtr使用的类,提供一个智能指针。 如果不适用智能指针,直接在class ScreenPtr中定义一个成员变量Screen*ptr,则无法对ptr进行引用计数的管理. Notes: 在ScrPtr类中的引用计数 use, 表示的是ScrPtr的引用次数,而不是该类的一个指针的引用计数。  #include "stdafx.h

2011-06-12 15:24:00 409

原创 VMware 笔试题目:猫和老鼠玩象棋

<br />猫和老鼠玩象棋,玩了M+N局,猫赢了M局 老鼠赢了N局 N>M,而且在整个过程中,猫的得分从来没有超过过老鼠,问共有多少种可能的比赛得分过程<br /> <br />先用学习数学的时候常常使用的方法,简化,推测的方法,<br />试推一下(N,M)的得分过程与(N-1, M) (N, M-1)的关系<br />假设猫和老鼠一共玩了X盘象棋,则X = M + N  <br /><br /> X取值<br />(N, M)<br />组合种类(N的数据用1表示,M的数据用0表示)<br />1<br

2011-02-15 19:29:00 1807

空空如也

空空如也

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

TA关注的人

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