职位类型:技术类
面试时间:2011年10月
招聘公司:迅雷网络
题目分为客观题和主观题,客观题答案仅供参考。
一、客观题
1.下面的程序可以从1....n中随机输出m个不重复的数。请填空
knuth(int n,int m)
{
srand((unsigned int)time(0));
for(int i=0;i
if(__)
{
cout<
__;
}}}
答案分别为:rand()%(n-i) 2.以下prim函数的功能是分解质因数。请填空 答案分别为:m%n 和 m/=n 3.下面程序的功能是输出数组的全排列。请填空 答案分别为:k==m 和 perm(list,k+1,m) 二、主观题 2.(60分)在8X8的棋盘上分布着n个骑士,他们想约在某一个格中聚会。骑士每天可以像国际象棋中的马那样移动一次,可以从中间像8个方向移动(当然不能走出棋盘),请计算n个骑士的最早聚会地点和要走多少天。要求尽早聚会,且n个人走的总步数最少,先到聚会地点的骑士可以不再移动等待其他的骑士。 从键盘输入n(0
void prim(int m,int n)
{
if(m>n)
{
while(__)n++;
__;
prim(m,n);
cout<
}
}
void perm(int list[],int k,int m)
{
if(__)
{
copy(list,list+m,ostream_iterator(cout," "));
cout<
return;
}
for(int i=k;i<=m;i++)< p="">
{
swap(&list[k],&list);
__;
swap(&list[k],&list);
}
}
1.(40分)用户启动迅雷时,服务器会以uid,login_time,logout_time的形式记录用户的在线时间;用户在使用迅雷下载时,服务器会以taskid,start_time,finish_time的形式记录任务的开始时间和结束时间。有效下载时间是指用户在开始时间和结束时间之间的在线时间,由于用户可能在下载的时候退出迅雷,因此有效下载时间并非finish_time和start_time之差。假设登录记录保存在login.txt中,每一行代表用户的上下线记录;下载记录保存在task.txt中,每一行代表一个任务记录,记录的字段之间以空格分开。计算每个用户的有效下载时间和总在线时间的比例。注意:请尽量使用STL的数据结构和算法