排序:
默认
按更新时间
按访问量
RSS订阅

C++队列模拟银行排队叫号

原题如下:大家可以根据题目自己做一遍,作为对基础的夯实和对C++学习的最佳实践。 说明: 1 这个题目的第一问老师给出了伪代码,伪代码是很关键的,因为这里面没有多线程技术。为了能够用最基本的C++语句完成多个队列的协作(等待队列,服务队列,完成队列)伪代码可以说给出了程序的骨架。 2 附加题...

2017-10-30 20:25:14

阅读数 1782

评论数 0

C++数独求解程序(阿里巴巴社招笔试题)对比:包括新加坡总理李显龙的程序

下面对几个网上的博客进行了对比,有的速度非常快,有的解不出来测试数独。 被测试数独: 000002050 078000300 000004000 500000000 000000100 000030708 200000040 000005090 010070000 正确解: 396 71...

2017-09-09 21:05:40

阅读数 437

评论数 0

C++ std::list实现大整数加法运算

#pragma once #include #include #include using namespace std; class CBigInt { public: CBigInt(void); CBigInt(const string& _str); ...

2016-11-18 12:40:25

阅读数 816

评论数 0

数独求解

#include using namespace std; #include #include const int MAX_SIZE = 9; //int result[MAX_SIZE][MAX_SIZE] = { // {1, 2, 3, 4, 5, 6, 7, 8, 9},...

2016-11-18 12:36:39

阅读数 298

评论数 0

指针与多维数组的那点事儿

最近笔试经常遇到这个p+1的问题,,还是《C++ Primer》说的明白:在C/C++中没有多维数组,只有元素是数组的数组。 关于指针加1移动的距离:一个指针加一移动的距离是它指向的元素在内存中的大小。 所以指向int的指针加1走过了4个字节;指向int[n]的指针加1走过了n*4个字...

2012-10-26 11:11:06

阅读数 1248

评论数 0

(科大讯飞)实现一个类:不能被继承,而且最多只能有三个实例

当时看到这个题目就想到了单例模式,可是不知道在哪里判断次数,刚开始打算放到构造函数里抛出异常的,现在想想还是没有真正理解单例模式。 class A { public: //this function is static ! static A* instance(void) { ...

2012-10-24 11:20:43

阅读数 2634

评论数 1

(科大讯飞)删除字符串中的连续空格(只保留一个),O(n)时间复杂度,O(1)空间复杂度

昨天(2012/10/23)晚上,南大,科大讯飞宣讲加笔试,题目很基础,也很简单,可是。。。没认真弄。挂了,回来痛定思痛,今天南邮打算再去跑一趟。        另一个哥们由于没有使用内层循环(潜意识告诉他,那样会增加复杂度,其实不会),使用了四个分支判断,而我当时考虑的实现的需要,用了最笨的方...

2012-10-24 11:02:23

阅读数 6073

评论数 8

递归算法(求n的加法组合,将一个整数拆分成多个整数相加的形式, O(N)时间,O(N)空间)4.0版

网上的多种解法比较复杂,本文用递归方法,22行代码搞定。时间和空间复杂度已经降到最低!   //n give the sum of a list,and start give the first number of the list void f(int n,list& list1,int...

2012-09-27 11:50:31

阅读数 9194

评论数 9

sizeof作用在struct和union上的情况,经典解答

请牢记以下3条原则:(在没有#pragma pack宏的情况下) 1:数据成员对齐规则:结构(struct)(或联合(union))的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员存储的起始位置要从该成员大小的整数倍开始(比如int在32位机为4字节,则要从4的整数倍地址开...

2012-09-22 22:02:58

阅读数 1402

评论数 0

判断栈的出栈和入栈序列O(N)时间O(N)空间

给出一个序列式栈的入栈序列,但是在入栈的过程中可能会有元素出栈,问最后的出栈序列是否可能出现 ,思路就是你想的那样。不再赘述,实在打字麻烦,看代码页很容易看的。就不写了。 void init_queue(queue& q , const int a[],const int n) { ...

2012-09-20 18:31:50

阅读数 2799

评论数 0

删除字符串中的某些字母O(N)时间O(1)空间

这个方法是用了hash方法,将要删除的字母先用数组下表表示,如果要删除,则标记为1.不需要删除的标记为0 这个方法在删除元素的时候比较巧妙,它对要删除的字符并不主动删除,而是将空间留在那里,让后面不需要被删除的字符去覆盖。 具体实现如下: string& f(string& ...

2012-09-20 15:16:06

阅读数 1222

评论数 0

动态规划算法(微软一面笔试题:股票交易,O(N)时间复杂度O(1)空间复杂度)

自从暑假面试被鄙视之后,回来就经常想这个问题,到今天应该快两个月了。在这个下午,我又拿出草稿纸,总算找到了思路,把它给搞定了。就像一个心愿一样,完结了。问题是这样的,如同题目:原题就不赘述了,化简之后的问题就是在数组中找到两个元素,计算后面的元素减去前面的元素的差。求出所有差的最大值。(你可以认为...

2012-08-24 15:18:13

阅读数 7707

评论数 9

微软笔试题 大型文件外部排序(二路归并和k路归并的实现和比较)

这两种排序方法都是先将一个无序的大的外部文件,分成若干块,分别读到内存中。 将每一块都先排好序,放到一个新的外部文件中。 二路归并的思路是每次将外部排序的文件两两合并,变成一个二倍大小的文件,然后对二倍大小的文件继续两两合并。直到最终合并为一个文件为止。k路归并是将外部排好序的子文件一次合并。先...

2012-08-20 21:45:41

阅读数 3915

评论数 0

C++合并两个有序的二进制文件

有时候很多基于文件的外部排序算法都需要合并两个有序的文件。下面就给出简单的C++实现方法。具体思路和合并两个有序的单链表的思路是一样的。 void merge_file(const string& file_in_name1,const string& file_in_name2,...

2012-08-16 10:15:09

阅读数 3521

评论数 2

微软笔试题 给一个包含10^7个整数的大文件排序

这个题目有一个前提条件,大文件的中的数据有有一个特点,那就是不存在重复的数据。就算是重复的数据,也只让你求出去除重复之后的那些数据的排序结果。          如果题目变成了这样,我们就可以考虑创建一个大的数组。数组的下表表示一个整数,数组的内容在我遍历文件的时候再赋值。如果数组下标代表的那个整...

2012-08-11 01:25:19

阅读数 1960

评论数 0

微软笔试题 跳台阶问题

题目  : 一个台阶有n个台阶。每次可以上一个台阶,也可以上两个台阶。有多少种不同的上法? 可以这么递归的来考虑,第一次跳一个台阶,这种情况的跳法总数是后面的跳法总数f(n-1);第一次跳两个台阶,这种情况下跳法总数是后面的跳法总数f(n-2);所以全部的跳法数就是 f(n)=f(n-1)+f(n...

2012-08-10 22:16:55

阅读数 1877

评论数 2

排列组合算法(微软笔试题:输出1到n的全排列)

这里希望能更清楚,如果不好,欢迎拍砖。 12345的next是12354,从这里我们可以看出,next就是将大数字提到小数字的前面,即对调一个升序的两个数字。      而对于更一般的情况,对如下排列 234578 改变任意个升序的数字对都可以得到后续的排列。哪一个才是next呢?     当有...

2012-08-09 14:36:40

阅读数 3355

评论数 0

微软暑期实习笔试题 合并两个有序单链表

当时做这一题的时候就感觉有点繁琐,其实也不难。感觉面试官就是想看看自己的基础水平在哪里。  当自己不想写,有必须要写的时候才发现很繁琐。原来打算20行都不要,却越写越多,有的地方居然挤不下。 最后只能时间到了,我还在纠结,因为给的是5分钟的时间。我自己也没想到居然没搞定。我还介绍了思路,但显然...

2012-07-31 10:43:02

阅读数 2085

评论数 6

微软笔试题 求出现次数超过一半的元素

此题为微软面试一百题中的一题。用动态规划算法可以实现在线性时间内完成任务。 思路就是假设第一个元素就是要找的那个result元素。最终这个元素出现的次数一定比其他所有元素出现的次数还多。每次遍历到一个新元素的时候就将result的计数减少或者增加,或者更新result。最终求出result。 ...

2012-07-22 15:18:34

阅读数 1686

评论数 0

动态规划算法 (微软笔试题,求连续子数组的最大和)

这个问题一般用动态规划算法可以再线性时间内得到解。 动态规划就是将大问题化为小问题,先把小问题解决了,最后大问题也就解决了。本问题是从一个元素开始,到两个元素,最后到数组的全部元素来逐步解决的 int main( void ) { timer t; //top_k_words(); in...

2012-07-22 14:40:50

阅读数 1621

评论数 0

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