自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(91)
  • 资源 (20)
  • 收藏
  • 关注

原创 【2013年06月26日】趋势科技夏令营面试

中午10点钟进去的,面试官是个很和蔼的技术男,先说我简历上的自我评价怎么这么少的字,然后和我讨论了毕业论文,技术问题主要了以下几个:(1)堆和栈的区别;(2)进程和线程的区别,为什么要提出线程的概念;(3)TCP三次握手过程,为什么只要三次不要四次;(4)用过gdb没,linux下在一个文件中查找一个字符串的命令是什么;(5)TCP和UDP的区别,为什么有的程序要用UDP而不用

2013-06-26 21:24:25 2821 1

原创 【并查集】判断是否为树

【问题描述】树是一种大家都不陌生的数据结构,它有可能是一颗空树或是一些满足要求的节点连接而成的有向边的集合。一棵树只有一个根节点,根节点没有指向它的边。除了根节点的每一个节点都只有一条边指向它。出现环的图都不是树。对一些节点连接而成的有向边的集合进行判定,判定每一组的输入数据构成的图是否是一棵树。【输入】每输入一对都为0的数时,表示一组数据输入完毕。每条边由一对正整数表

2012-11-26 15:05:42 3345

原创 【贪心】删数问题

【问题描述】给定n位整数q,去掉其中任意k比如,178543删除四个数字后,最小的新数是13。贪心策略:最近下降点优先。#include #include #include using namespace std;void delek(vector &s, int k){ int n=s.size(); if(k>=n) ; else

2012-11-22 17:13:54 1931

原创 【贪心】活动安排问题

活动安排问题就是要在所给的活动集合中选出最大的相容活动子集合,是可以用贪心算法有效求解的很好例子。该问题要求高效地安排一系列争用某一公共资源的活动。贪心算法提供了一个简单、漂亮的方法使得尽可能多的活动能兼容地使用公共资源。    设有n个活动的集合E={1,2,…,n},其中每个活动都要求使用同一资源,如演讲会场等,而在同一时间内只有一个活动能使用这一资源。每个活动i都有一个要求使用该资源的起

2012-11-22 15:46:42 6857 2

原创 会场安排问题

【问题描述】假设要在足够多的会场里安排一批活动,并希望使用尽可能少的会场。(这个问题实际上是著名的图着色问题。若将每一个活动作为图的一个顶点,不相容活动间用边相连。使相邻顶点有不同颜色的最小着色数,相应于要找的最小会场数。)【数据输入】第一行有1个正整数k,表示有k个待安排的活动。接下来的k行中,每行有两个正整数,分别表示k个待安排的活动开始时间和活动结束时间。时间以0点开始的分钟计。

2012-11-19 17:31:54 15429 5

原创 【百度2012年10月20日笔试】1.一个数被3除余2,被5除余3,被7除余2,求满足条件的前N个数。

用“迭代法”求解(通用的解法)1)从“最大的除数7”开始思考:假设要求的这个数设为N=7a+2,(a=1,2,3……)2)考虑其余的条件:被3除余2。即: 3│7a+2-2, 整理得:3│a,即:a=3b,(b=1,2,3……) N=7×3b+2=21b+23)考虑最后一个条件:被5除余3。即: 5│21b+2-3, 整理得:5│b-1,即:b=1+5c,

2012-11-05 09:47:18 5231 3

原创 【百度2012年10月20日笔试】2.求字符串中连续重复字母的最大重复次数, 如: aabbbbcadd 的最大字母重复次数为 4, 有四个连续的b. 要求用递归实现.

#include using namespace std;int CountLengest(char* pBuf){ int result=0; char *p=pBuf; if(*pBuf=='\0') return result; while((*pBuf!='\0') && (*p==*pBuf)) { result++; pBuf+

2012-11-05 09:42:54 1710

原创 【设计模式】组合模式

定义:将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。范例一:using System;using System.Collections.Generic;using System.Text;namespace 组合模式{ abstract class Component {

2012-10-23 20:42:52 1692

原创 【设计模式】备忘录模式

定义:在不破坏封装的前提下,捕获并且保存一个对象的内部状态,这样可以将对象恢复到原先保存的状态。正如很多软件中,按Ctrl-Z会取消最后一次用户操作,即撤销(Undo)操作。一般情况下,备忘录模式有三个类:Memento:备忘录;  Originator:原发器;    Caretaker:看管者,负责看管备忘录。    using System;using System.Coll

2012-10-23 16:30:07 781

原创 【设计模式】责任链模式

定义:避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些请求连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。实现关键:在每一级责任者里设置其下一级责任者,如果请求它不能处理,就转给其下一级,从而整个形成一条责任链。实例:请假加薪审批using System;using System.Collections.Generic;using System.

2012-10-23 15:38:05 735

原创 【设计模式】单例模式

单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类成为单例类,它提供全局访问的方法。单例模式的要点有三个:一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。实现一:普通单例模式using System;using System.Collections.Generic;using System.Text;

2012-10-23 11:34:18 785

原创 【设计模式】观察者模式

观察者模式:定义对象间的一种一对多的依赖关系,使得每当一个对象改变状态时,则其他相关依赖对象皆得到通知并被自动更新。实现一:被观察者需要有添加和删除观察者的功能,当被观察者状态变化时,调用其观察者的更新函数。猫和老鼠using System;using System.Collections.Generic;using System.Text;using System.Col

2012-10-23 10:48:46 1108

原创 【回溯法】n皇后问题

一。递归回溯#include using namespace std;#define N 8int sum=0;int *x=new int[N+1];bool place(int k){ int i; for(i=1; i<k; i++) { if(x[i]==x[k] || abs(i-k)==abs(x[i]-x[k])) ret

2012-10-10 11:23:06 10669 1

原创 【回溯法】实现给定二进制位数的所有组合

#include using namespace std;#define N 4int *x=new int[N];void backtrack(int t){ int i=0; if(t>N-1) { for(i=0; i<N; i++) cout<<x[i]<<" "; cout<<endl; } else {

2012-10-08 10:14:09 2099

原创 不使用中间变量实现strlen函数

2009腾迅校园招聘笔试题:不使用中间变量求const字符串长度,即实现求字符串长度库函数strlen函数。函数接口声明如下:int strlen(const char *p);思路分析:     “不使用中间变量”是说程序员不能显式的申请内存,即不能有局部变量或者动态内存申请。如果函数自动申请栈内存或者使用寄存器存储变量,或者使用立即数寻址即常量,那么就相当于“不使用中间变量”。从函数原

2012-09-20 14:28:18 2476

原创 给定能随机生成整数1到5的函数,写出能随机生成整数1到7的函数。

#include #include using namespace std;int rand5(){ return (rand()%5+1);}void main(){ int a; while((a=rand5()*5+rand5())>26); cout<< (a-3)/3<<endl;}代码解释:1. 通过 rand5()*

2012-09-19 18:49:13 2022

原创 N!末尾0的个数

参考编程之美2.2不要被阶乘吓倒N!末尾0的个数,即等于因子10的个数,又10=2*5,所以N!末尾0的个数即因子5的个数(因为能被2整除的数出现的频率比能被5整除的数高得多)。#include using namespace std;int Count1(int n){ int count=0; int j; for(int i=1; i<=n; i++)

2012-09-18 14:06:34 1504 1

原创 大数相乘

利用字符串处理大数#include #include using namespace std;void multiply(const char* a, const char* b){ int i, j, ca, cb, *s; ca=strlen(a); cb=strlen(b); s=(int *)malloc(sizeof(int)*(ca+cb));

2012-09-17 16:10:54 952 2

转载 两个数组a[N],b[N],其中A[N]的各个元素值已知,现给b[i]赋值

【题目描述】两个数组a[N],b[N],其中A[N]的各个元素值已知,现给b[i]赋值,b[i] = a[0]*a[1]*a[2]...*a[N-1]/a[i];要求:1.不准用除法运算2.除了循环计数值,a[N],b[N]外,不准再用其他任何变量(包括局部变量,全局变量等)3.满足时间复杂度O(n),空间复杂度O(1) 【题目来源】腾讯2012 【题目分析

2012-09-17 11:08:47 3143

原创 洗牌算法:随机打乱一个数组的顺序

给定一个数组,要求把数组内元素的顺序随机打乱,然后输出,主要是要保证效率。这其实是个洗牌算法,首先从所有元素中随机选取一个与第一个元素进行交换,然后在第二个之后选择一个元素与第二个交换,直到最后一个元素。这样能确保每个元素在每个位置的概率都是1/n。 #include #include #include #include using namespace std;

2012-09-17 09:37:23 35983 2

原创 字符串移动(字符串为*号和26个字母的任意组合,把*号都移动到最左侧,把字母移到最右侧并保持相对顺序不变),要求时间和空间复杂度最小 .

#include #include using namespace std;char* MoveStar(char s[]){ if(!s) return NULL; int StarCount=0; int len=strlen(s); for(int i=len-1; i>=0; i--) { if(s[i]=='*') StarCount

2012-09-16 21:34:30 2090

原创 Trie树的基本操作

#include #include #include #define MAX 26using namespace std;typedef struct TrieNode{ bool isStr;//标记该节点处是否构成单词 struct TrieNode* next[MAX];//孩子分支}Trie;void insert(Trie *root, con

2012-09-16 20:26:35 886 2

原创 删除字符串开始及末尾的空白符,并且把数组中间的多个空格(如果有)符转化为1个。

#include #include #include void DelSpace(char s[]){ char *p=s; int FlagOfFront=1; int j=0; while(*p!='\0') { if(*p!=' ') s[j++]=*p; else { while(*p==' ') p++;

2012-09-16 15:47:29 1814

原创 链表相邻元素翻转

链表相邻元素翻转,如a->b->c->d->e->f-g,翻转后变为:b->a->d->c->f->e->g 解:三个指针,p和q两个节点作为一组处理,pre用于链接不同组的节点。#include #include using namespace std;typedef struct LNode{ int data; struct LNode* next;}

2012-09-16 15:31:53 2116 1

原创 复杂链表的复制

题目:有一个复杂链表,其结点除了有一个m_pNext指针指向下一个结点外,还有一个m_pSibling指向链表中的任一结点或者NULL。请完成函数ComplexNode* Clone(ComplexNode* pHead),以复制一个复杂链表。其结点的C++定义如下: struct ComplexNode{    int m_nValue;    ComplexNode* m_

2012-06-14 09:02:48 3486 4

原创 旋转数组中的最小元素

题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个排好序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3, 4, 5, 1, 2}为{1, 2, 3, 4, 5}的一个旋转,该数组的最小值为1。分析:这道题最直观的解法并不难。从头到尾遍历数组一次,就能找出最小的元素,时间复杂度显然是O(N)。但这个思路没有利用输入数组的特性,我们应该能找到更好的解法。我

2012-06-13 15:34:59 3664 4

原创 【百度面试题】把数组排成最小的数

问题描述:输入一个正整数数组,将它们连接起来排成一个数,输出能排出的所有数字中最小的一个。例如输入数组{32,  321},则输出这两个能排成的最小数字32132。请给出解决问题的算法,并证明该算法。      思路:先将整数数组转为字符串数组,然后字符串数组进行排序,最后依次输出字符串数组即可。这里注意的是字符串的比较函数需要重新定义,不是比较a和b,而是比较ab与 ba。如果ab ba,

2012-06-13 14:48:27 11865 7

原创 n个骰子的点数

题目:把n个骰子扔在地上,所有骰子朝上一面的点数之和为S。输入n,打印出S的所有可能的值出现的概率。分析:骰子一共6个面,每个面上都有一个点数,对应的数字是1到 6之间的一个数字。所以,n个骰子的点数和的最小值为n,最大值为6n。因此,一个直观的思路就是定义一个长度为6n-n的数组,和为S的点数出现的次数保存到数组第S-n个元素里。另外,我们还知道n个骰子的所有点数的排列数6^n。一旦我们统计

2012-06-13 10:28:02 1513

原创 扑克牌的顺子

题目:从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2-10为数字本身,A为1,J为11,Q为12,K为13,而大小王可以看成任意数字。  我们需要把扑克牌的背景抽象成计算机语言。不难想象,我们可以把5张牌看成由5个数字组成的数组。大小王是特殊的数字,我们不妨把它们都当成0,这样和其他扑克牌代表的数字就不重复了。接下来我们来分析怎样判断5个数字是不是连续的。最直观的是

2012-06-12 22:57:20 5381

原创 颠倒栈

题目:用递归颠倒一个栈。例如输入栈{1, 2, 3, 4, 5},1在栈顶。颠倒之后的栈为{5, 4, 3, 2, 1},5处在栈顶。分析:乍一看到这道题目,第一反应是把栈里的所有元素逐一pop出来,放到一个数组里,然后在数组里颠倒所有元素,最后把数组中的所有元素逐一push进入栈。这时栈也就颠倒过来了。颠倒一个数组是一件很容易的事情。不过这种思路需要显示分配一个长度为O(n)的数组,而且

2012-06-12 14:26:12 4353

原创 输出1到最大的N位数

题目:输入数字n,按顺序输出从1最大的n位10进制数。比如输入3,则输出1、2、3一直到最大的3位数即999。分析:这是一道很有意思的题目。看起来很简单,其实里面却有不少的玄机。算法一:最直观的算法,求出最大的n位数是多少,然后一个循环打印。void Print1ToMaxOfNDigits1(int n){ int number=1; int i=0; while(i

2012-06-11 10:07:13 7088 1

原创 解决android模拟器上不了网问题

新建的模拟器2.2版本不能上网,解决如下:1.运行模拟器(可以在开发环境ECLIPSE直接RUN或通过exe运行);2. 模拟器运行后,打开命令提示符cmd,定位到tools目录下,进入adb shell ,设置net.dns1为电脑本地连接属性Internet 协议(TCP/IP)里的备用DNS服务器地址;3. 模拟器可以上网,但每次关闭模拟器再重启后都要重新设置,暂时未找到一劳永逸

2012-06-09 19:25:51 1313

原创 寻找丑数

题目:我们把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第1500个丑数。分析:这是一道在网络上广为流传的面试题,据说google曾经采用过这道题。算法一:所谓一个数m是另一个数n的因子,是指n能被m整除,也就是n % m == 0。根据丑数的定义,丑数只能被2、3和5

2012-06-06 09:35:01 1231 1

原创 从第一个字符串中删除第二个字符串中的所有字符

例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”。思路:不可避免的是遍历第一个字符串,如果遍历一个字符,都需要去第二个字符串中查找其存不存在,那么复杂度会是O(nm),当然由于字符数有限,所以m是个常量。关于查找速度最快的当然是hash表,对于8位字符,size=2^8足矣。关于删除字符,后面的字符要往前移,如果

2012-06-05 23:08:16 6850 1

原创 找出数组中两个只出现一次的数字

题目:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。#include using namespace std;void FindTwoDifferentNum(int a[], int n, int &num1, int& num2)//返回数组a中两个只出现一次的数字num1和num2

2012-06-05 22:37:31 2151

原创 【POJ1330】最近公共祖先(LCA):并查集+深搜

最近公共祖先(LCA)问题常见于各种面试题中,针对不同情况算法也不尽相同。情况1:二叉树是个二叉查找树,且root和两个节点的值(a, b)已知。如果该二叉树是二叉查找树,那么求解LCA十分简单。基本思想为:从树根开始,该节点的值为t,如果t大于t1和t2,说明t1和t2都位于t的左侧,所以它们的共同祖先必定在t的左子树中,从t.left开始搜索;如果t小于t1和t2,说明t1和t2都

2012-06-05 21:46:04 15433

原创 【hdu1232】畅通工程【并查集】

Problem Description某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇。省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间接通过道路可达即可)。问最少还需要建设多少条道路? Input测试输入包含若干测试用例。每个测试用例的第1行给出两个正整数,分别是城镇数目N ( < 100

2012-06-05 10:22:43 955

原创 【hdu1213】How Many Tables【并查集】

Problem DescriptionToday is Ignatius' birthday. He invites a lot of friends. Now it's dinner time. Ignatius wants to know how many tables he needs at least. You have to notice that not all the frien

2012-06-05 10:02:35 3682

原创 最长单调递减子序列

方法一:普通动态规划算法,时间复杂度O(n2)。int LIS(int a[], int n){ int i, j, k; int maxlen; int *b=new int[n]; for(i=0, b[0]=1; i<n; i++) { for(j=0, k=0; j<i; j++) { if(a[j]>a[i] && k<b[j])

2012-06-04 16:44:13 2199 2

原创 出现次数超过一半的数字

题目:数组中有一个数字出现的次数超过了数组长度的一半,找出这个数字。            详见《编程之美》的2.3寻找发帖水王。#include using namespace std;int Find(int *a, int N)//出现次数超过一半的数字{ int candidate; int nTimes, i; for(i=nTimes=0; i<

2012-06-04 10:41:20 774

深入浅出MFC

深入浅出MFC,学习MFC机制可视化编程的必备书籍

2011-09-09

Unix 环境高级编程

Unix 环境高级编程,全面剖析Unix操作系统,讲解Unix系统下编程

2011-08-18

C语言最新编程技巧200例(修订本)

C语言最新编程技巧200例,包含汉字处理实用程序,图形图像处理实用程序,语音处理实用程序,网络通信实用程序,输入打印实用程序,菜单实用程序,数据安全实用程序以及其你它程序,适于学习掌握实用c语言

2011-08-18

VISUAL C++ MFC扩展编程实例

本书主要介绍了运用Visual C++ 5.0或6.0的高级编程技巧,内容涉及MFC程序设计的最新概念,全书提供了大量VC的编程实例,旨在帮助读者较为全面地掌握VC编程知识、技巧和方法。全书分为三个部分和附录。第一部分介绍Windows编程的基础知识,第二部分讲解用户界面编程技巧,最后一部分涉及Windows内部进程的一些实例。本书思路清晰,实用性强,是计算机应用人员及大专院校师生不可多得的参考书。

2011-08-18

C++编程思想-讲解C++编程思想

本书作者根据自己学习C++的亲身体会及多年教学经验,用简单的例子和简练的叙述讲解C++编程,别具特色。 全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、内联函数、命名控制、引用和拷贝构造函数、运算符重载、动态对象创建、继承和组合、多态和虚函数、模板和包容器类、多重继承、异常处理和运行时类型识别。 本书作为正式教材和自学用书均非常优秀,作为程序设计者的参考用书亦极为合适。

2011-08-18

面向对象技术及uml建模实例

面向对象技术及uml建模,实例讲解类图,顺序图,活动图,状态图等uml建模过程,内容丰富,学习简单

2011-08-17

算法导论课后经典习题答案

算法导论课后经典习题答案,经典算法题解,学习算法必看书籍

2011-08-17

华为软件工程师经典笔试试题

华为软件工程师经典笔试试题,包含各种经典的面试题,对于准备参加华为笔试及其他公司笔试具有很好的参考价值,对于理解C/C++也是很好的资料

2011-08-17

华为编程开发规范与案例

华为编程开发规范与案例,提高编程效率,优化代码

2011-08-08

高质量C++&C编程指南

高质量C++&C编程指南,包含专业知识和技术规范,提高编程质量,优化代码

2011-08-08

jdbc数据库驱动包,包含各种数据库

jdbc 数据库驱动包 SQLServer Mysql Oracle等,还包括配置文件,连接数据库不再困难

2011-08-07

JavaScript编写的界面友好的日历

JavaScript编写的界面友好的日历,使用方便简单,下载即可运行,界面友好,功能齐全

2011-08-07

高一凡数据结构及算法及其源代码

高一凡数据结构及算法及其源代码,包含数据结构的各部分,链表,栈,队列,树,图,以及排序等,并包含许多经典算法的实现及源代码

2011-08-06

严蔚敏:数据结构(C语言版)习题集答案

严蔚敏:数据结构(C语言版)习题集答案,包括线性表,堆,栈,队列,树,图,排列等各章答案

2011-08-06

MFC可视化五子棋游戏

Microsoft Visual C++ 6.0平台下,基于MFC的可视化五子棋游戏,界面很友好,两个人博弈,鼠标左键代表黑棋,鼠标右健代表白棋,可以自己跟自己玩

2011-08-06

软件工程软件设计文档模板

软件工程软件开发过程中的文档模板,包括软件需求说明书,测试分析报告,测试计划,概要设计说明书,数据库设计说明书,详细设计说明书,项目开发计划,项目总结,用户手册等文档

2011-08-06

基于B/S架构的教务管理系统C#&ASP.NET

基于B/S架构的教务管理系统,使用C#和ASP.NET,有学生,教师,管理员三种权限,基本功能:基本信息管理,选课,退课,登记成绩,更新成绩,人员管理

2011-08-06

基于C/S架构的数据库课设-C#教务管理系统

这是一个基于C/S架构的数据库课设-C#教务管理系统,有学生,教师和管理员三种权限和用户界面,可以实现基本信息管理,选课,退课,教师登记成绩,查询学生成绩,更新学生成绩,管理员实现人员管理,权限管理

2011-08-06

tiny小型编译器代码及实现

基于tiny的小型编译器,包括词法分析,语法分析,转化成三地址码,最后转化成c语言代码,在c语言编译器上编译运行

2010-11-08

空空如也

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

TA关注的人

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