
C PLUS PLUS Training
iteye_16074
这个作者很懒,什么都没留下…
展开
-
C++书籍阅读列表
学习C++是一个循序渐进,而且非常漫长的过程,对于处于不同阶段的学习者,应该有自己独特的学习路线图。根据个人的知识结构,我的学习路线图分为五个阶段:[color=blue]第一阶段[/color]《C++编程规范:101条规则、准则与最佳实践》《C++沉思录》(Ruminations on C++)《C和指针》(POINTERS ON C)《C和C++经典著作:C陷阱与缺陷...原创 2012-06-11 16:23:16 · 249 阅读 · 0 评论 -
百度面试题——简单运算
问题:要求不使用+ - * / < >运算符号判定给定两个非零数的大小。输入:多组输入两个数a和b。输出:输出min=较小的数字,max=较大的数字实现代码:[code="C"]#include int main(int argc,char* argv[]){ int a,b; for(;~scanf("%d%d",&a,&b);){ ...原创 2012-03-17 15:52:56 · 191 阅读 · 0 评论 -
陈博的完美主义
[b][color=red]问题:[/color][/b]在JOBDU团队里,陈博是最讲平均主义的人,对数字十分敏感。事实上,他还是个数字完美主义者。例如看到N个数字的时候,从1到N的每个数都需要在其中出现且仅出现一次,否则他就觉得这个数字序列不完美。后来,我明白了:这是排列!对于一个整数序列d1, d2, d3 ... dn,你是否能够算出至少改变其中的几个数,才能把他们变成从1到N的一个排...原创 2012-03-08 10:31:43 · 157 阅读 · 0 评论 -
疯狂的JobDu序列
[b][color=red]问题[/color]:[/b]阳仔作为OJ的数据管理员,每一周的题目录入都让其很抓狂,因为题目不是他出的,他控制不了出题的速度……在等题目的时候,阳仔又不敢出去打篮球,所以只能在纸上乱涂乱写,这天,阳仔在纸上写下了这样的序列:1 2 2 3 3 3 4 4 4 4 5 5 5 5 5 6 6 6 6 6 6 ……即大小为k的数字,正好会在序列中连续重复k...原创 2012-03-07 15:10:46 · 230 阅读 · 0 评论 -
Day of Week
问题: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 are ...原创 2012-03-02 17:30:42 · 252 阅读 · 1 评论 -
大整数排序
问题:对N个长度最长可达1000的数进行排序。输入:输入第一行为一个整数N,(1原创 2012-02-29 22:12:27 · 159 阅读 · 0 评论 -
寻找最长的合法括号序列
问题:假如给你一个由’(‘和’)’组成的一个随机的括号序列,当然,这个括号序列肯定不能保证是左右括号匹配的,所以给你的任务便是去掉其中的一些括号,使得剩下的括号序列能够左右括号匹配且长度最长,即最长的合法括号序列。输入:测试数据包括多个,每个测试数据只有一行,即一个随机的括号序列,该括号序列的长度保证不超过10的6次方。输出:对于每个测试案例,输出一个整数,表示最后剩下的最长合...原创 2012-02-27 11:50:00 · 476 阅读 · 0 评论 -
特殊的数
问题:现在有n个数,其中有一些出现一次,一些出现两次,一些出现了很多次。现在要求你找出那些只出现一次的数,并且按升序输出。输入要求:本题有多组case。每个case有两行,第一行输入一个n,表示有n个数,1...原创 2012-02-26 11:04:10 · 175 阅读 · 0 评论 -
Output the k-th Prime Number
问题:输出第k个素数(1原创 2012-02-17 18:23:41 · 527 阅读 · 0 评论 -
最大子序列和
[color=green]问题:[/color]给出一个整数序列S,其中有N个数,定义其中一个非空连续子序列T中所有数的和为T的“序列和”。对于S的所有非空连续子序列T,求最大的序列和。变量条件:N为正整数,N≤1000000,结果序列和在范围(-2^63,2^63-1)以内。输入:第一行为一个正整数N,第二行为N个整数,表示序列中的数。输出:输入可能包括多...原创 2012-02-15 14:06:49 · 207 阅读 · 0 评论 -
导弹拦截问题
[color=green]问题:[/color]某国为了防御敌国的导弹袭击,开发出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭,并观测到导弹依次飞来的高度,请计算这套系统最多能拦截多少导弹。拦截来袭导弹时,必须按来袭导弹袭击的时间顺序,不允许先拦截后面的导弹,再拦截前面的导弹。...原创 2012-02-14 19:41:40 · 355 阅读 · 0 评论 -
液晶屏幕裁剪问题
问题:苏州某液晶厂一直生产a * b大小规格的液晶屏幕,由于该厂的加工工艺限制,液晶屏的边长都为整数。最近由于市场需求发生变化,x : y比例的显示器比较流行,该厂为了适应市场需求,需要改造原生产线,并将库存的a * b大小的液晶屏进行裁剪,使之适应市场的需求。该厂同时希望,将a * b大小的液晶屏裁剪之后,不仅符合x : y的比例要求,同时在转换为新比例液晶屏的过程中,保证因切割而丢弃的液晶边角...原创 2012-02-12 19:30:03 · 270 阅读 · 0 评论 -
互联网公司面试题之十二
问题:五连击数组[BAIDU]:在任意一个数组当中,若你能找出有五个以及五个以上的连续元素时,我们就称它为五连击数组。但是这种数组并不是视场会有,你的任务就是通过增加最少的元素,使一个数组成为一个五连击数组。输入要求:每个测试文件包括多个测试案例,每个测试案例包括两行。第一行代表输入的元素个数N,其中0a[i]; sort(a,a+n,compare); for(m=5,i=0...原创 2012-01-24 13:33:23 · 138 阅读 · 0 评论 -
互联网公司面试题之十一
问题:递推数列【BAIDU】:给定a0,a1,以及an=p*a(n-1)+q*a(n-2)中的p,q。这里n>=2。求第k数对10000的模。[color=darkred]要求性能尽可能优化。[/color]说明:所给出的程序的输入包括a0,a1,p,q,k,输出第k个数a(k)对10000的模。答:初看这个题目,第一印象就是无非考考递归程序设计或者线性递推罢了。其实仔细想了想题目...原创 2012-01-14 14:57:57 · 148 阅读 · 0 评论 -
互联网公司面试题之十
问题:Sun同学是考研大军之中的一员,他每天过着三点一线的生活。学校里面有一个公告栏,他每天都看到上面张贴着各种考研海报。Sun同学提出一个问题:公告栏上还有多少空白区域是没有被考研海报粘贴过的呢?请你帮他完成这样一个程序,计算没有张贴过海报的面积。注意:公告栏左上角是坐标原点(0,0),公告栏长宽相等。数据有多组,每组输入公告栏长度n(0...原创 2011-12-27 22:10:29 · 169 阅读 · 0 评论 -
互联网公司面试题之九
问题一:查找一个数组中的第K小的数,注意同样大小算一样大。如2 1 3 4 5 2,第三小数为3。[color=red]时间复杂度要求达到O(n)[/color]。答:实现代码如下(位图算法实现):[code="C"]s,m,j;main(i,n){ char a[65535]={0,}; for(;~scanf("%d",&n);printf("%d\...原创 2011-12-16 10:07:26 · 130 阅读 · 0 评论 -
互联网公司面试题之七
问题:[color=red]编写一个程序来确定一下你的机器是大端地址还是小端地址[/color]。答:实现代码如下:[code="C"]#include int main(){ int value = 0x1234; char value_front=*((char *)(&value)); char value_back=*((char ...原创 2011-12-15 14:47:50 · 116 阅读 · 0 评论 -
互联网公司面试题之六
问题:给定a和n,计算a+aa+aaa+a...a(n个a)的和,[color=red]请注意a和n的取值范围分别为[1,9]和[1,100][/color]。答:实现代码如下:[code="C"]i,k,j;main(a,n){ char s[100],t[100]; for(;~scanf("%d%d",&a,&n);){ for(i=1,t...原创 2011-12-14 11:40:50 · 123 阅读 · 0 评论 -
互联网公司面试题之五
问题:存在两组数组,和4个数字a,b,c,d,要求做如下操作,将第一个数组第a个数到第b个数,第二个数组的第c个数到第d数放到一个数组中,求出合并后数组的中间值,如果有两个中间值,取下标较小的那个。输入要求:第一行一个整数t表示有t个测试数据,第二行两个整数,表示两个数组的长度,接下来两行表示两个数字的值。最后一行有四个整数a,b,c,d。数组的长度不会超过1000。输出要求:每行...原创 2011-12-13 18:42:32 · 153 阅读 · 0 评论 -
互联网公司面试题之四
问题:假设给定一个嵌入式设备,它的内存有限,可以利用的内存只有1M(包括代码段和数据段空间)。你的任务是编写一个尽可能精简的程序以最高效的方式实现下面任务:读入一个整数N,若N为非负整数,则计算N到2N之间的整数和;若N为一个负数,则求2N到N之间的整数和。答:实现代码如下:[code="C++"]#include n,s,t,i;int main(){ ...原创 2011-12-11 15:20:06 · 126 阅读 · 0 评论 -
互联网公司面试题之三
问题:12翻一下是21,34翻一下是43,12+34是46,46翻一下是64,现在又任意两个正整数,问它们两个数反转的和是否等于两个数的和的反转,请编程实现。要求程序的效率尽可能高、代码尽量短以及内存使用量尽量小。Input->第一行是一个正整数表示测试的个数n;只有n行,每行两个数据a和b(0...原创 2011-12-08 21:39:15 · 146 阅读 · 0 评论 -
互联网公司面试题之二
问题:输入一个长度不超过20的字符串,对所输入的字符串,按照ASCII码大小从小到大进行排序,输出排序后的结果。要求时间复杂度尽量低。答:实现代码如下:[code="C++"]#include #include int main(){ int a[128]={0}; char b[20]; int i,l,k; char s[...原创 2011-12-05 20:11:02 · 129 阅读 · 0 评论 -
互联网公司面试题之一
问题:对给定的字符串(只包含'z','o','j'三种字符),判断它是否能AC。判断是否能够AC的规则如下:(1)zoj能AC;(2)若字符串形式为xzojx,则也能AC,其中x可以是N个'o'或者为空;(3)若azbjc能AC,则azbojac也能AC,其中a,b,c为N个'o'或者为空。答:实现代码如下:[code="C++"]#include #i...原创 2011-12-04 23:26:39 · 113 阅读 · 0 评论 -
筛除数组中重复的元素
问题:编写一个程序实现筛除数组中重复元素功能。算法思路:基于简单的想法,先把数组排序,然后扫描整个数组跳过重复的元素。算法的效率取决于排序算法的效率。算法实现:[code="java"]//// main.cpp// MyProjectForCPP//// Created by labuser on 11/2/11.// Copyrigh...原创 2011-11-03 21:12:15 · 178 阅读 · 0 评论 -
给定一个整数数组,检测是否存在一个和为零的子数组
问题:给定一个整数数组,写一个算法实现判断是否存在一个和为零的子数组。答:算法思路:计算数组的前缀和,然后将前缀和进行排序,如果存在连续两个元素相同的情况即存在一个和为零的子数组,否则不存在。算法的代码实现:[code="C++"]//// main.cpp// MyProjectForCPP//// Created by labuser on...原创 2011-11-03 16:22:31 · 347 阅读 · 0 评论 -
将一个整数拆分成两个整数的平方和算法
问题:请使用C/C++写一个程序实现将一个整数拆分成两个整数的平方和,把所有的可能的组合都要计算出来。答:假定输入的整数为n,则扫描1-(n的平方根)之间的整数,令row=1,column=(int)(sqrt((double)given)+0.5),使得row*row+column*column=n的数输出即可。代码如下所示:[code="C++"]//// ...原创 2011-11-03 15:26:42 · 4367 阅读 · 0 评论 -
如何实现数组的高效移位算法
问题:编写一个能够支持数组快速移位的算法,时间复杂度在O(N)以内。答:要实现在线性的时间内实现数组的快速移动,就要考虑如何使用逆序算法来达到移动的目的。例如,我要移动的数组元素称为A,剩余的部分称为B,那么原来次序为AB,如何变成BA呢?其实根据倒置的算法是可以实现移位操作的,我们先取A'为A的逆序序列,B'为B的逆序序列,进行(A'B')'操作即可得到BA序列。实现算法如下:[...原创 2011-11-03 13:00:14 · 661 阅读 · 0 评论 -
C++面试问题之一
请定义一个宏,比较两个数a、b的大小,不能使用大于、小于和if语句。答:使用两个数的差值和与运算来判断这两个数的大小。[code="C++"]#include #include using namespace std;#define MAX(a,b) (((long)(a-b))&0x80000000)?b:a;int main(in...原创 2011-10-10 19:25:10 · 101 阅读 · 0 评论 -
在C++中"\n"和endl的区别
在输出时,遇到行结束符endl才刷新缓冲区,因此使用行结束符endl,会在回车换行的同时清理缓冲区,endl做了两件事情。因为endl在执行换行时还调用了cout的成员函数flush(),该方法会输出缓冲区中的所有数据并且刷新缓冲区。在编译器的include目录中ostream.h文件,可以看到endl的原型:[code="C++"]inline _CRTIMP ostre...原创 2011-08-24 21:56:13 · 199 阅读 · 0 评论 -
通过一个实例来分析C++中虚函数的调用原理
虚函数是C++中一个重要的概念,搞清楚这个概念对于理解C++运行的内在机制有一定的帮助。下面通过一个例子来总结一下C++中虚函数的调用原理。示例代码:[code="C++"]#include #include using namespace std;class A{ public: void set(int i,int j)...原创 2011-08-08 12:36:49 · 295 阅读 · 0 评论 -
C++中的虚基类及其构造顺序
虚基类是为了消除歧义和保持基类成员一个拷贝而产生的概念。当在多条继承路径上有一个公共的基类,在这些路径中的某几条汇合处,这个公共的基类就会产生多个实例(或者说是多个副本),如果想要保持这个基类的一个实例,可以将这个公共基类说明为虚基类。在继承中产生歧义的原因可能是继承类继承了基类多次,从而产生了多个拷贝,即不止一个通过多个路径继承基类,导致在内存中创建了基类成员的多个拷贝。虚基类的基本原则...原创 2011-08-01 18:43:28 · 330 阅读 · 0 评论 -
C++中的重载、覆盖和隐藏的区分
今天看书遇到了C++中比较难缠的概念,就是重载、覆盖和隐藏。如果只要区分重载和覆盖,相信应该没有什么难度,并且它们的界限还是比较清晰的。现在加上了隐藏,初次看这些概念还真是不好区分。下面总结一下它们之间的区别:成员函数的[b][color=red]重载[/color][/b]的特征有以下4点:(1) 必需在相同的范围内,即在同一个类的内部;(2) 函数名称相同;(3) 函数的参...原创 2011-07-30 20:23:32 · 74 阅读 · 0 评论 -
C++在多继承时构造函数调用的顺序
今天看书时注意到C++在多继承时,基类的构造顺序是按照继承时给定顺序执行的,析构的顺序正好相反!而与它们初始化的顺序没有任何关系,下面随便写了一个Demo程序来验证C++在多继承时基类的构造顺序。[code="C++"]#include #include using namespace std;class a{ public: ...原创 2011-07-28 22:35:30 · 347 阅读 · 0 评论 -
C++中的格式设置区别
今天使用C++编程练习时遇到了一个小问题:包含头文件iomanip文件后,在标准输出流中使用setprecision函数指定了输出数据的精度。没有预料到setprecision函数会影响到后面输出流的精度。查阅了些C++的资料,下面总结一下C++设定输出格式的几种方式:(1) 使用cout对象的width方法,如: cout.width(20);(2) 使用里面的函数设置输出的...原创 2011-07-18 21:09:39 · 151 阅读 · 0 评论