第一次参加面试的笔试题目

domybest2012 2011-06-03 09:33:51
第一次参加笔试,有点紧张,笔试时间为1.5个小时,每个人发了一份题目,10张答题纸
共有七个题目,没有选择和填空题,题目大致如下:


1.
某种传染病第一天只有一个患者,前五天为潜伏期,不发作也不会传染人
第6天开始发作,从发作到治愈需要5天时间,期间每天传染3个人
求第N天共有多少患者


2.
将字符串中相邻相同的子串合并为一个子串,如"12342343454565678789" -- "123456789"

3.
求一个串中出现的第一个最长重复子串。采用顺序结构存储串,实现求串s中出现的第一个最长重复子串的下标和长度

4.
求bit位中1的总个数为n的所有整数集合
比如,二进制位中有两个1的整数为:
0x00000003
0x00000005
0x00000006
.
.
.
0xc0000000


5.
去掉整数的bit位为1的最高的两个bit位,如0x1030f --> 0x10f

6.
unsigned int intvert(unsigned int x, int p, int n)
实现对x的进行转换, p为起始转化位(最左边为第1位算起), n为需要转换的长度, 对这些bit位取反
假设起始点在右边.如x = 0b0001 0001, p=4, n=3 转换后x = 0b0110 0001


7.
C和C++混合编程,C源文件中会调用C++源文件中定义的函数int func_cpp(int),C++也会调用C源程序中定义的函数int func_c(int),
请组织程序的结构c.c, cpp.cpp, pro.h
...全文
13133 278 打赏 收藏 转发到动态 举报
写回复
用AI写文章
278 条回复
切换为时间正序
请发表友善的回复…
发表回复
hssdx 2012-04-04
  • 打赏
  • 举报
回复
说错了,不好意思,这题是递推题,还有点陷阱,思考了下,不需要数组直接保存当前的结果,而是用数组保存当前增加的患者。说不太清,还是看下面的列表把:

1
1
1
1
1
1 3
1 3 3
1 3 3 3
1 3 3 3 3
1 3 3 3 3 3
* 3 3 3 3 3 9
* 3 3 3 3 3 9 18
* 3 3 3 3 3 9 18 27
...

红色的就是已经发作了,*就是已经治愈了,这样再在后面统计此数组中的人数(*作0处理),便可以得到当前天数n的患者。
代码等会儿写出来。
hssdx 2012-04-04
  • 打赏
  • 举报
回复
f(x) = f(x-1) - f(x-10) + f(x-5)*3

当前病人,等于 昨天病人 - 十天前感染的病人(已治愈) + 五天前感染的病人所传染的病人(已发作)。
hssdx 2012-04-04
  • 打赏
  • 举报
回复
/*某种传染病第一天只有一个患者,前五天为潜伏期 ,不发作也不会传染人
第6天开始发作,从发作到治愈需要5天时间,期间每天传染3个人
求第N天共有多少患者*/
#include <cstdio>
long int a[100] = {1,3,3,3,3,3,9,18,27,36};//直接初始化前10个元素
int main()
{
for(int k=10; k<50; k++)
{
int s=0;
for(int i=k-9; i<=k-5; i++)
s+=a[i];
a[k] = s*3;
}
for(int n=1; n<=50; n++)
{
long int s=0;
if(n<=5)
{
printf("%d:%ld\n", n, 1L);
continue;
}
else if(n<=10)
{
for(int i=0; i<=n-5; i++)
s+=a[i];
}
else if(n<=15)
{
for(int i=1; i<=n-5; i++)
s+=a[i];
}
else if(n>15)
{
for(int i=n-14; i<=n-5; i++)
s+=a[i];
}
printf("%d:%ld\n", n, s);
}
printf("\nInput \"Enter\" to quit...\n");
getchar();
return 0;
}
hackbuteer1 2011-09-03
  • 打赏
  • 举报
回复
学习一下啊
hackbuteer1 2011-09-01
  • 打赏
  • 举报
回复
有些还是有难度的
dsadsadsa11 2011-06-16
  • 打赏
  • 举报
回复
骗分,字数补丁
wuyuwww 2011-06-16
  • 打赏
  • 举报
回复
楼主能在那么短的时间把所有题都做了 可见楼主的功底很深啊
wuyuwww 2011-06-16
  • 打赏
  • 举报
回复
楼主能在那么短的时间把所有题都做了 可见楼主的功底很深啊
wuyuwww 2011-06-16
  • 打赏
  • 举报
回复
恭喜楼主啊!
zmkkobe 2011-06-16
  • 打赏
  • 举报
回复
都是有深度的题目,不错
chuchulige 2011-06-16
  • 打赏
  • 举报
回复
呵呵,好难的题哦,之前很多客户公司招工程师也都会有笔试的,我这边倒是有很多C的或Java的工程师、架构师职位,基本都是知名外企,大家如果想换工作的话可以联系我jessielxm@hotmail.com,希望可以帮到大家。
txqc4 2011-06-16
  • 打赏
  • 举报
回复
我用python和递归算法实现第一题需求
def Pass( n ):
#小于6天,没传染人所以就自己1人得病
if ( n < 6 ):
return 1

leftdays = n - 5
if leftdays > 5:
validdays = 5 #大于10天则能感染人的天数只有5天,并且自己已经治愈自己就不算病人了
total = 0
else:
total = 1
validdays = leftdays

for i in range(validdays):
#计算每天被感人的病人及其感染者得总数
total = total + 3*Pass( leftdays - i )
return total

我的计算结果
1 1
2 1
3 1
4 1
5 1
6 4
7 7
8 10
9 13
10 16
11 24
12 42
13 69
14 105
15 150
16 210
17 315
18 492
19 768
20 1170
21 1728
22 2547
23 3816
24 5805
25 8865
26 13419
27 20115
28 30087
29 45198
30 68283
31 103356
32 156060
33 234873
34 353052
35 531306
36 801117
37 1208952
38 1823310
39 2746872
for i in range(50):
print i, Pass(i)

0 1
1 1
2 1
3 1
4 1
5 1
6 4
7 7
8 10
9 13
10 16
11 24
12 42
13 69
14 105
15 150
16 210
17 315
18 492
19 768
20 1170
21 1728
22 2547
23 3816
24 5805
25 8865
26 13419
27 20115
28 30087
29 45198
30 68283
31 103356
32 156060
33 234873
34 353052
35 531306
36 801117
37 1208952
38 1823310
39 2746872
40 4135941
41 6229224
42 9387900
43 14153211
44 21334671
45 32148576
46 48432897
47 72969741
48 109959444
49 165722841
lx66103567 2011-06-15
  • 打赏
  • 举报
回复
现在面试题目好难???
lijianbin9 2011-06-15
  • 打赏
  • 举报
回复
mark
swx002 2011-06-15
  • 打赏
  • 举报
回复
转帖的,我不会写,呵呵

第一题:以一个人为起点,10天为一个周期,进行传染病的传染,当能够传染到其他人时,再以那个人为起点继续传染。依此递归下去。

public static void infection(int N){
11. int day =1;
12. if(N <= 5){
13. return;
14. }else if(N>5&&N<10){
15. for(day = 6;day <= N;day++){
16. men = men + 3;
17. }
18. }else{
19. for(day = 6;day <= 10;day++){
20. men = men + 3;
21. infection(N-day+1);
22. infection(N-day+1);
23. infection(N-day+1);
24. }
25. men--;
26. }
27. }


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/n67628814/archive/2011/06/09/6533080.aspx
beyondlwm 2011-06-15
  • 打赏
  • 举报
回复
最烦这种面试题。
Returex 2011-06-15
  • 打赏
  • 举报
回复
代码
	/**
* 某种传染病第一天只有一个患者,前五天为潜伏期,不发作也不会传染人
* 第6天开始发作,从发作到治愈需要5天时间,期间每天传染3个人
* 求第N天共有多少患者
* @param args
*/
//天数
private final static int Ndays = 25;

public static void main(String[] args) {

int statusList[] = new int[11];
//便于理解, 0位不用,1-10位记录处于传染病的10种感染状态的人数
//用int[10]的0-9位当然也可以。。

int totalNum;
//感染总人数

statusList[1]=1;

System.out.print("第1天感染人数:1\n");
for(int i=2;i<=Ndays;i++){
totalNum = 0;
for(int j=10;j>1;j--)
statusList[j]=statusList[j-1];
statusList[1] = 3*(statusList[6]+statusList[7]+statusList[8]+statusList[9]+statusList[10]);

for(int j=10;j>0;j--)
totalNum += statusList[j];
System.out.print("第"+i+"天感染人数:"+totalNum+"\n");
}
}

结果
第1天感染人数:1
第2天感染人数:1
第3天感染人数:1
第4天感染人数:1
第5天感染人数:1
第6天感染人数:4
第7天感染人数:7
第8天感染人数:10
第9天感染人数:13
第10天感染人数:16
第11天感染人数:24
第12天感染人数:42
第13天感染人数:69
第14天感染人数:105
第15天感染人数:150
第16天感染人数:210
第17天感染人数:315
第18天感染人数:492
第19天感染人数:768
第20天感染人数:1170
第21天感染人数:1728
第22天感染人数:2547
第23天感染人数:3816
第24天感染人数:5805
第25天感染人数:8865
Returex 2011-06-15
  • 打赏
  • 举报
回复
同161楼的一样,其实第一题用模拟写下来简单的多,不用考虑复杂算法。
贴下我的Java实现:
	/**
* 某种传染病第一天只有一个患者,前五天为潜伏期,不发作也不会传染人
* 第6天开始发作,从发作到治愈需要5天时间,期间每天传染3个人
* 求第N天共有多少患者
* @param args
*/
//天数
private final static int Ndays = 25;

public static void main(String[] args) {

int statusList[] = new int[11];
//感染总人数
int totalNum;
//便于理解, 0位不用,1-10位记录处于传染病的10种感染状态的人数
//用int[10]的0-9位当然也可以。。

statusList[1]=1;

System.out.print("第1天感染人数:1\n");
for(int i=2;i<=Ndays;i++){
totalNum = 0;
for(int j=10;j>1;j--)
statusList[j]=statusList[j-1];
statusList[1] = 3*(statusList[6]+statusList[7]+statusList[8]+statusList[9]+statusList[10]);

for(int j=10;j>0;j--)
totalNum += statusList[j];
System.out.print("第"+i+"天感染人数:"+totalNum+"\n");
}
}

结果如下:
第1天感染人数:1
第2天感染人数:1
第3天感染人数:1
第4天感染人数:1
第5天感染人数:1
第6天感染人数:4
第7天感染人数:7
第8天感染人数:10
第9天感染人数:13
第10天感染人数:16
第11天感染人数:24
第12天感染人数:42
第13天感染人数:69
第14天感染人数:105
第15天感染人数:150
第16天感染人数:210
第17天感染人数:315
第18天感染人数:492
第19天感染人数:768
第20天感染人数:1170
第21天感染人数:1728
第22天感染人数:2547
第23天感染人数:3816
第24天感染人数:5805
第25天感染人数:8865

[Quote=引用 161 楼 zhangweidkd 的回复:]

//第一题
#include<iostream>

using namespace std;

int main()
{
int a[10] = {1};//第一天一个病人
int b,N,i,j,total=0;

cout<<"输入天数:"<<endl;
cin>>N;

for (i = 1; i < N; i++)
{
fo……
[/Quote]
domybest2012 2011-06-15
  • 打赏
  • 举报
回复
分数不多,可能后面给出代码的朋友没有得到分,望见谅!
domybest2012 2011-06-15
  • 打赏
  • 举报
回复
谢谢大家的回复,今天接到电话了,笔试通过了
这个暑假开始就可以去实习了,他们说我写的代码和思路基本上都是正确的
他们说,只要能正确的写出其中四道题目的完整代码,其他的只要写出大概思路正确就算是通过了
加载更多回复(251)

64,674

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧