百度笔试Word文档格式.docx

上传人:b****2 文档编号:15352642 上传时间:2022-10-29 格式:DOCX 页数:17 大小:23.55KB
下载 相关 举报
百度笔试Word文档格式.docx_第1页
第1页 / 共17页
百度笔试Word文档格式.docx_第2页
第2页 / 共17页
百度笔试Word文档格式.docx_第3页
第3页 / 共17页
百度笔试Word文档格式.docx_第4页
第4页 / 共17页
百度笔试Word文档格式.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

百度笔试Word文档格式.docx

《百度笔试Word文档格式.docx》由会员分享,可在线阅读,更多相关《百度笔试Word文档格式.docx(17页珍藏版)》请在冰豆网上搜索。

百度笔试Word文档格式.docx

信号

套接字

2.实现一个TCP端口监听服务进程通常需要使用那些socket函数,并请描述这些函

数的作用?

(至少回答6个或以上)

Socket建立套接字句柄

Bind绑定这个套接字到服务器地址和端口上

Listen监听套接字,

Accept接受连接

Read读

Write写

3.将基于多进程模型的程序移植为基于多线程模型的程序,通常需要如何修改调

整程序(解决那些问题)?

4.什么是C/C++的模板(template)编程,有什么好处?

5.什么是数据库外键?

什么是事务?

存储过程和触发器的用途?

//这是第二大题编程:

二编程题:

请用c/c++语言编写完整的程序代码,除了实现题目所要求的基本功能

,还应考虑算法的效率和逻辑的严密性.

6.请编程实现大数阶乘。

比如计算2000的阶乘,要求用printf输出结果

数组乘法

inta[N];

intb[N];

intc[2*N];

voidmutiply()

{

for(inti=0;

i<

N;

++i){

intcarry=0;

for(intj=0;

j<

++j){

carry+=a[i]*b[j]+c[i+j];

c[i+j]=carry%10;

carry/=10;

}

}

7.请分别设计一个递归和非递归算法来计算F(n)

F列可递归定义为:

n为大于等于0的整数

F(n)=n当n=0,1,2

F(n)=F(n-1)-F(n-3)当n&

gt;

=3

//递归版本..不考虑高精度大数了,反正这是体力活,以免大家看得辛苦.

#include<

stdio.h>

string.h>

#defineMAX1000000

longlongF[MAX];

boolhaveBeenCal[MAX];

//递归防止重复计算.

longlongCal(intn)

if(haveBeenCal[n])returnF[n];

haveBeenCal[n]=1;

returnF[n]=Cal(n-1)-Cal(n-3);

intmain()

intn;

memset(haveBeenCal,0,sizeof(haveBeenCal));

haveBeenCal[0]=haveBeenCal[1]=haveBeenCal[2]=1;

F[0]=0,F[1]=1,F[2]=2;

while(scanf("

%d"

&

n)!

=EOF){

if(n<

0||n>

=MAX)printf("

inavailaben/n"

);

printf("

%lld/n"

Cal(n));

return0;

//非递归版本

#defineMAX100000

intF[MAX];

intn,i,max;

max=2;

=max){

%d/n"

F[n]);

continue;

for(i=max+1;

i<

=n;

i++)F[i]=F[i-1]-F[i-3];

max=n;

注:

对于这一题,我们还有另一个算法,对于一个n,不用一步一步地推n次,只要

推lg(n)次就可以了.

这是因为

__----

|F[n]||10-1||F[n-1]|

|F[n-1]|=|000|*|F[n-2]|

|F[n-2]||010||F[n-3]|

------

再推下去,得:

__--^(n-2)--

|F[n]||10-1||F[2]|

|F[n-1]|=|000|*|F[1]|

|F[n-2]||010||F[0]|

于是,问题就转化成如何求一个矩阵的n次方了,用分治的思想就可以做到lg(n)咯

,好简单,这里略,

可以参考素数判写的Miller-Rabin算法..kaka.

8.海量单向链表排序

有一单向链表,已知其首指针为head,链表长度为百万量级,链表的每个

结点的结构如下:

typedefstruct_node_t{

inta;

struct_node_t*next;

}node_t;

试设计程序,将该链表各结点按a值升序排序,要求在原地进行,不允许使

用大量的辅助内存。

//直接修改一下Mergesort就可以了,nlogn

typedefstruct_node_t{

}node_t;

node_t*Mergesort(node_t*L,intcount)//链表头及要链表元数个数

if(count==1)returnL;

intcount1=count/2;

intcount2=count-count1;

node_t*p=L;

inti;

for(i=0;

count1;

i++)p=p->

next;

node_t*h1=Mergesort(L,count1);

node_t*h2=Mergesort(p,count2);

intt1=0,t2=0;

node_t*head=NULL,*cur;

while(t1<

count1||t2<

count2){

if(t1<

count1&

&

t2<

if(h1->

a<

h2->

a)p=h1,h1=h1->

next,t1++;

elsep=h2,h2=h2->

next,t2++;

elseif(t1<

count1)p=h1,h1=h1->

if(head==NULL)head=cur=p;

else{

cur->

next=p;

cur=p;

returnhead;

voidsort(node_t*&

a)

intcount=0;

node_t*p=a;

while(a){

count++;

a=a->

a=Mergesort(p,count);

p=a;

count-1;

p->

next=NULL;

voidinput(node_t*&

a=NULL;

node_t*p;

node_t*s=newnode_t;

s->

a=n;

if(a==NULL)a=p=s;

elsep->

next=s;

p=s;

voidoutput(node_t*a)

%d"

a->

a);

/n"

node_t*a;

//freopen("

test.in"

"

r"

stdin);

input(a);

//屏幕输入时输一串数字,然后按enter再按ctrl+z结束

sort(a);

output(a);

9.集合合并

给定一个字符串集合,格式如:

{aaa,bbb,ccc},{bbb,ddd},{eee,fff},{ggg},{ddd,hhh}

要求将其中交集不为空的集合合并,要求合并完成后的集合无交集,例如上例应输

出{aaa,bbb,ccc,ddd,hhh},{eee,fff},{ggg}

1)请描述你解决这个问题的思路

2)请给出主要的处理流程,算法,以及算法的复杂度

3)请描述可能的改进(改进的方向如效果,性能等等)

(1)主要思路

关键就是两步:

1.确定那些集合要合成一堆.

2.如何合并一堆集合.

(2)算法

1.每个元素对应一个桶,装含有该元素的集合的编号.

如例子中:

{aaa}:

1

{bbb}:

12

{ccc}:

{ddd}:

25

{eee}:

3

{fff}:

{ggg}:

4

{hhh}:

5

这一步须时(所有集合中元素个数的总和).

2.然后用并查集,每个桶中相邻的两个集合就要合并.

如上例,集合1,2,5要合并,其它独立.

这步须时,总元素个数*a(总元素个数)

其中a(n)是Ackman函数的反函数,一般<

=4,所以也大约地关于总元素个数成线

性.

3.合并集合

例如,现在要分别合并集合的编号为1,2,5及集合编号为3,4,6的集合.

那么,我们就把集合1,2,5中含有的元素都标记为1.

再把3,4,6中含的元素都标记为2.

然后把所有元素扫一次,按标号分类就可以了.

复杂度,O(总元素个数).

综上,复杂度大约是O(总元素个数).

当然,这里不包括由给每个元素编号的复杂度,其实复杂度不高的吧,就是用最弱智

的方法就可以做到

不同元素的个数*log(不同元素的个数).

(3)改进

有比上面的算法快的话你通知一声我,谢谢.

一、某密码表以文件的形式存储在硬盘上,文件名为:

encrypt.txt,其内容为:

abcdefghijklmnopqrstuvwxyz

ushecginpaywdqmlxbozrtfvjk

其中第一行和第二行分别是原字符和加密后字符的对应,请使用任意一种语言(如PHP、PE

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1