06 2015 档案
摘要:Given two wordsword1andword2, find the minimum number of steps required to convertword1toword2. (each operation is counted as 1 step.)You have the fol...
阅读全文
摘要:Find the contiguous subarray within an array (containing at least one number) which has the largest sum.For example, given the array[−2,1,−3,4,−1,2,1,...
阅读全文
摘要:Given amxngrid filled with non-negative numbers, find a path from top left to bottom right whichminimizesthe sum of all numbers along its path.Note:Yo...
阅读全文
摘要:题目:1、一个函数fun()均匀返回0和1,各自的概率是50%,利用这个函数实现一个函数,使之返回 1的概率为3/4,0的概率为1/4。2、假如有一个函数rand5能等概率生成1 - 5 之间的整数,如何利用rand5来实现rand7?rand7函数的要求是能够等概率生成1 - 7之间的整数。思路:...
阅读全文
摘要:题目:数组A中任意两个相邻元素大小相差1,现给定这样的数组A和目标整数t,找出t在数组A中的位置。如数组:[1,2,3,4,3,4,5,6,5],找到4在数组中的位置。思路:很明显,在数组中寻找某个数的复杂度为O(n),但在某些特殊数组中,可以通过寻找规律来减少比较次数。上述数组的规律就是:相邻元素...
阅读全文
摘要:题目:话说某天一艘海盗船被天下砸下来的一头牛给击中了,5个倒霉的家伙只好逃难到一个孤岛,发现岛上孤零零的,幸好有棵椰子树,还有一只猴子! 大家把椰子全部采摘下来放在一起,但是天已经很晚了,所以就睡觉先. 晚上某个家伙悄悄的起床,悄悄的将椰子分成5份,结果发现多一个椰子,顺手就给了幸运的猴子,然后又悄...
阅读全文
摘要:题目:一个整数组里包含0-(n-1)的排列 (0到(n-1)恰好只出现一次),如果每次只允许把任意数和0交换,求排好顺序至少交换多少次。思路:这是组合数学中的圈问题,可以把数组中的位置关系看成图的拓扑关系。例如A[3]={2,0,1},2在0的位置,0在1的位置,1在2的位置,那么把它们画成图的拓扑...
阅读全文
摘要:题目:字符串只有可能有A、B、C三个字母组成,如果任何紧邻的三个字母相同,就非法。求长度为n的合法字符串有多少个?比如: ABBBCA是非法,ACCBCCA是合法的。思路:1、枚举方法:数学组合问题,枚举所有情况,然后判断是否为合法串,并统计个数。时间复杂度:O(3^n)2、动态规划:假设:dp[i...
阅读全文
摘要:题目:给定一个数n, 求不超过n的所有的能被3或者5整除的数的和。例如: n = 9,答案3 + 6 + 5 + 9 = 23。思路:能被3或者5整除的数是哪些?被3整除的数:3,6,9....[n/3]*3被5整除的数:5,10,15...[n/5]*5重复的数(同时被3和5整除的数,即被15整除...
阅读全文
摘要:题目:要获得一个C语言程序的运行时间,常用的方法是调用头文件time.h,其中提供了clock()函数,可以捕捉从程序开始运行到clock()被调用时所耗费的时间。这个时间单位是clock tick,即“时钟打点”。同时还有一个常数CLK_TCK,给出了机器时钟每秒所走的时钟打点数。于是为了获得一个...
阅读全文
摘要:题目:输入:整数A输出:整数B条件:A和B的二进制1的个数相同,且A和B之间的距离|A-B|最小。思路:题目没有说明整数类型,这里认为是带符号的整数,即区分正负数。根据题意,A和B的二进制1的个数相同,且要求距离最小,那么A和B的差别就在于相邻的bit位,如1100和1010,0011和0101等。...
阅读全文
摘要:以下两段程序的输出是什么?程序1:#include "stdio.h"class Base { public: int Bar(char x) { return (int)(x); } virtual int Bar(int x) { ...
阅读全文
摘要:题目:如题所示思路:看一个实例,1011*1010,由于二进制的特殊性,可以将该乘法运算表达式拆分为两个运算,1011*1000以及1011*0010的和,对于二进制运算,左移一位,等价于乘以0010,左移三位,等价于乘以1000,因此两者的乘积为10110+1011000之和,即为1101110....
阅读全文
摘要:题目:如题所示思路:逻辑运算,即二进制运算,无外乎与&、或|、非~、异或^以及移位>>,using namespace std;// recursive methodint add_1(int num1,int num2){ if(num1==0) return num2; ...
阅读全文
摘要:主要内容:1、C++类继承中的构造函数和析构函数2、C++多态性中的静态绑定和动态绑定3、C++多态性中析构函数声明为虚函数1、C++类继承中的构造函数和析构函数在C++的类继承中,建立对象时,首先调用基类的构造函数,然后在调用下一个派生类的构造函数,依次类推;析构对象时,其顺序正好与构造相反;具体...
阅读全文
摘要:静态绑定和动态绑定是C++多态性的一种特性。1、对象的静态类型和动态类型:对象的静态类型:对象在声明是采用的类型,在编译期确定;对象的动态类型:当前对象所指的类型,在运行期决定,对象的动态类型可以更改,但静态类型无法更改。class B{};class C: public B{};class D: ...
阅读全文
摘要:思想:在C++的类继承中,建立对象时,首先调用基类的构造函数,然后在调用下一个派生类的构造函数,依次类推;析构对象时,其顺序正好与构造相反;例子:#include using namespace std;class Shape{public: void Draw() {cout<<"Base:...
阅读全文
摘要:1、和在你的编译器include文件夹里面可以看到,二者是两个文件,里面的代码是不一样的。后缀为.h的头文件c++标准已经明确提出不支持了,早些的实现将标准库功能定义在全局空间里,声明在带.h后缀的头文件里;c++标准为了和C区别开,也为了正确使用命名空间,规定头文件不使用后缀.h。因此,当使用时,...
阅读全文
摘要:题目:如题所示思路:与上一题要求不一样的是,这里是整数的除法,而不仅仅是正整数,因此需要对输入的两个数的正负性进行判断代码:#include using namespace std;int myDiv(int a,int b){ if(a==0) return 0; if(...
阅读全文
摘要:题目:如题所示思路:假设问题是a除以b:题目要求是正整数,所以考虑的条件不是很多,如果要求是整数的话,即要考虑正负情况的判断。1、最简单的就是依次用被除数a减去除数b,并统计减去的次数,即为相除结果;这种方法效率不高,尤其是在被除数a很大,除数b很小的情况下,效率非常低;2、考虑每次相减时,将b翻倍...
阅读全文
摘要:题目:坐标轴上从左到右依次的点为a[0]、a[1]、a[2]……a[n-1],设一根木棒的长度为L,求L最多能覆盖坐标轴的几个点?思路:这是一道简单的数组题,方法也很简单:直接从左到右扫描,两个指针i和j,i从位置0开始,j从位置1开始,如果a[j] - a[i] L,则j--回退,覆盖点个数-1...
阅读全文
摘要:1、什么是左值和右值?左值就是出现在表达式左边的值(等号左边),可以被改变,他是存储数据值的那块内存的地址,也称为变量的地址;右值是指存储在某内存地址中的数据,也称为变量的数据。左值可以作为右值,但右值不可以是左值。因此也只有左值才能被取地址。2、举两个问题:int i = 0;(i++)+=i; ...
阅读全文
摘要:在看《程序员面试笔试宝典》时,发现了这样一个问题,书中只给出了++i的效率高一些,但并没有给出具体的解释和说明。在网上找到下面的答案:1、从高级层面上解释++i 是i=i+1,表达式的值就是i本身i++ 也是i=i+1,但表达式的值是加1前的副本,由于要先保存副本,因此效率低一些。对于C++内置类型...
阅读全文
摘要:题目:数组中的数分为两组,给出一个算法,使得两个组的和的差的绝对值最小数组中的数的取值范围是0weight[i]另外,如果想知道是由那几件物品组成的最大价值,可以从后往前回溯,当V[i][j]>V[i-1][j],说明第i件物品被加入(路径不唯一)。代码:#include #include usin...
阅读全文