笔试3
创新工场今晚的笔试很有意思,吸取下上次的教训:
1.破坏互斥中的“环路等待”的算法,我认为是“银行家算法”,因为这样就可以保证至少一个得到分配,环路等待就无从谈起了,但从网上查的一些资料是资源有序分配法,看来想错了
2.A*B的棋盘,只能走(x+1,y+2)、(x+1,y)、(x,y+1)、(x+2,y)四个方向,从(0,0)走到(A-1,B-1),个人认为采用递归算法;
long getpathnumber(x,y){
if(x+1==A-1&&y+2==B-1)||.....................//满足终止条件;
return 1;//找到一条路
else{
return getpathnumber(x+1,y+2)+
getpathnumber(x+1,y)+
................+
................;//朝四个方向走
}
}
3.算一个超大数的因子的和,个人采用
struct node{
boolean flag; //代表该数是否已是因子;
long num;
}
for(long i=0;i<n/2;i++){
if(n/i==0&&nodes[i].flag==false){
sum=sum+i+n/i;
}
}
最后一题灭有时间了,应该是采用动态规划思想做的
创新工场出的题还是挺好的,个人学习学习了很多