阿里巴巴笔试题目

选择题答错扣分,搞得好几道都没敢填,直接上大题吧:

1.

给你一个整型数组A[N],完成一个小程序代码(20行之内),使得A[N]逆向,即原数组为1,2,3,4,逆向之后为4,3,2,1

void revense(int * a,int n) {

//难度没有,注意程序的边界条件就可以了

}


2.

战报交流:战场上不同的位置有N个战士(n>4),每个战士知道当前的一些战况,现在需要这n个战士通过通话交流,互相传达自己知道的战况信息,每次通话,可以让通话的双方知道对方的所有情报,设计算法,使用最少的通话次数,是的战场上的n个士兵知道所有的战况信息,不需要写程序代码,得出最少的通话次数。

虽然题目中说N>4,不过从N>4开始分析的话应该比较容易,4个人,需要4次交流就可以了。N=8时,可以先分成两组A和B,A[1]和B[1]、A[2]和B[2]、A[3]和B[3]、A[4]和B[4]交流,然后每个组内就又变成4个战士的情况了,则总共需要4+4+4=12次交流。继续分析N=16的情况,就可以发现一个递归式:f(n)=2*f(n/2)+n/2,为什么?好好想一想呗。不过这个式子似乎只对2的幂数有用,如果不是2的幂数的情况呢,你懂的。


3.

有N个人,其中一个明星和n-1个群众,群众都认识明星,明星不认识任何群众,群众和群众之间的认识关系不知道,现在如果你是机器人R2T2,你每次问一个人是否认识另外一个人的代价为O(1),试设计一种算法找出明星,并给出时间复杂度(没有复杂度不得分)。

问A是否认识B,认识,A是群众,不认识,B是群众,每次询问都可以确定一个群众,剔除群众,接着问下一个人,最后剩下的人就是明星了。询问次数:N-1。复杂度是什么东西,可以到O(logN)么,当然可以,只要你坚信可以,那就可以!!!


4.

有一个淘宝商户,在某城市有n个仓库,每个仓库的储货量不同,现在要通过货物运输,将每次仓库的储货量变成一致的,n个仓库之间的运输线路围城一个圈,即1->2->3->4->...->n->1->...,货物只能通过连接的仓库运输,设计最小的运送成本(运货量*路程)达到淘宝商户的要求,并写出代码。

好吧,我不会,请戳http://blog.csdn.net/karen_mo/article/details/8056865

你可能感兴趣的:(阿里巴巴笔试题目)