阿里巴巴校园招聘笔试题和面试题答案目(3)

招聘笔试题2018-11-22王华老师

  29. //因此这里有两个A,一个B

  30.

  31.

  32. //在return之前进行析构

  33. /************************************************************************/

  34. /*析构是按照定义对象的反顺序来的,而且同一个对象按照构造的反顺序来的,因此这里先

  35. 析构b然后才是a,那么b的构造顺序是上面的A()->_a->B()(局部),反过来,就是B()(局部)->_a->A()

  36. 因此得到的就是~B->~A->~A

  37. 在b之后就是析构a

  38. 最后结果就是

  39. ~B->~A->~A->~A*/

  40. return 0;

  41. }

  42. 23、一个骰子,6面,1个面是 1, 2个面是2, 3个面是3,问平均掷多少次能使1、2、3都至少出现一次!

  43. 24、问题描述:

  12个高矮不同的人,排成两排,每排必须是从矮到高排列,而且第二排比对应的第一排的人高,问排列方式有多少种?

  这个笔试题,很YD,因为把某个递归关系隐藏得很深.

  44. 问题分析:

  我们先把这12个人从低到高排列,然后,选择6个人排在第一排,那么剩下的6个肯定是在第二排.

  用0表示对应的人在第一排,用1表示对应的人在第二排,那么含有6个0,6个1的序列,就对应一种方案.

  比如000000111111就对应着

  第一排:0 1 2 3 4 5

  第二排:6 7 8 9 10 11

  010101010101就对应着

  第一排:0 2 4 6 8 10

  第二排:1 3 5 7 9 11

  问题转换为,这样的满足条件的01序列有多少个.

  观察1的出现,我们考虑这一个出现能不能放在第二排,显然,在这个1之前出现的那些0,1对应的人

  要么是在这个1左边,要么是在这个1前面.而肯定要有一个0的,在这个1前面,统计在这个1之前的0和1的个数.

  也就是要求,0的个数大于1的个数.

  OK,问题已经解决.

  如果把0看成入栈操作,1看成出栈操作,就是说给定6个元素,合法的入栈出栈序列有多少个.

  这就是catalan数,这里只是用于栈,等价地描述还有,二叉树的枚举,多边形分成三角形的个数,圆括弧插入公式中的

  方法数,其通项是c(2n, n)/(n+1)。

相关推荐

猜你喜欢

大家正在看

换一换