2015年秋季腾讯校园招聘开发岗笔试题(四道大题)

1.      在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码( Gray Code )。请编写一个函数,使用递归方法生成 N 位的格雷码,并且保证这个函数的健壮性。

 
2. 有下图的题解,请用 C/C++ 代码来列出满足下图 0-100 内的所有答案。




3. 如图所示,系统中有三个进程 Producer Transmitter Consumer Producer Transmitter 共用缓冲区 ProduceBuf Consumer Transmitter 共用缓冲区 ConsumeBuf

 

Producer 进程负责不断地将输入信息送入 ProduceBuf Transmitter 进程负责从 ProduceBuf 中取出信息进行处理,并将处理结果送到 ConsumeBuf Consumer 进程负责从 ConsumeBuf 中读取结果并输出。

 

假设 ProduceBuf 中最多可放 12 个信息,现已放入了 3 个信息; ConSumeBuf 最多可放 6 个信息。试写出正确实现进程 Producer,Transmitter Consumer 的同步与互斥的算法

 

(要求:用类 C 语言描述,条理清楚,注释恰当;)



4. 春节期间小明使用微信收到很多个红包,非常开心。在查看领取红包记录时发现,某个红包金额出现的次数超过了红包总数的一半。请帮小明找到该红包金额。写出具体算法思路和代码实现,要求算法尽可能高效。
全部评论
第一道大题解答:如下图所示
点赞 回复 分享
发布于 2015-09-07 10:05
报的前端,有点虐
点赞 回复 分享
发布于 2015-09-07 11:12
这速度够快啊
点赞 回复 分享
发布于 2015-09-07 08:29
package com.mbc.text; public class Gery { public static String[] gery(int m) { String [] gery=new String [(int)Math.pow(2, m)]; if(m==1) { gery[0]="0"; gery[1]="1"; return gery; } String [] last=gery(m-1); for(int i=0;i<last.length;i++) { gery[i]="0"+last[i]; gery[gery.length-1-i]="1"+last[i]; } return  gery; } public static void main(String[] args) { int n=4; String[] res=gery(n); for(int i=0;i<res.length;i++) {             System.out.println(res[i]); }   } }
点赞 回复 分享
发布于 2015-09-07 19:01
最后一题参考编程之美上的“水王”
点赞 回复 分享
发布于 2015-09-07 20:13
速度真快!
点赞 回复 分享
发布于 2015-09-07 08:35
赞~~ 互联网速度。。
点赞 回复 分享
发布于 2015-09-07 09:40
http://blog.csdn.net/l19920622/article/details/48261261
点赞 回复 分享
发布于 2015-09-07 10:38
第四道大题是编程之美上的寻找水王那题,上来就20几行代码先把这道题解决了
点赞 回复 分享
发布于 2015-09-07 14:35
public class 数组中超过一半的数 { public static int findMoreHalf(int []  A) { int count=1; int result=A[0]; for(int i=0;i<A.length;i++) {     if(count==0)     {          result=A[i];     count=1;     }     if(result==A[i])     {     count++;          }     else     {     count--;               } }  return result; } public static void main(String[] args) {      int []  A={1,2,3,4,5,5,5,5,5,5,5,7,7,7,7,7,7,7,7,7,7,7};     System.out.print(findMoreHalf(A));              } }
点赞 回复 分享
发布于 2015-09-07 15:21
第二题 #include <iostream> #include <vector> #include <string> using namespace std; void test(int a, int e, int f) { int b,c,d,g,h; b=13-a; if(b<0 || b>100) return; h=5-e; if(h<0 || h>100) return; g=4+h-f; if(g<0 || g>100) return; c=(4-a)*f; if(c<0 || c>100) return; if(e!=0) { if((c-4)%e != 0) return; d=(c-4)/e; if((b-d*g) == 4) { cout << a <<" "<< b <<" "<< c <<" "<< d <<" "<< e <<" "<< f <<" "<< g <<" "<< h <<" "<<endl; } } else { if(c == 4) { for(d=0;d<=100;d++) { if((b-d*g) == 4) { cout << a <<" "<< b <<" "<< c <<" "<< d <<" "<< e <<" "<< f <<" "<< g <<" "<< h <<" "<<endl; } } } } } void func() { for(int a=0;a<=5;a++) for(int e=0;e<=4;e++) for(int f=1;f<=9;f++) { test(a,e,f); } } void main (){ func(); }
点赞 回复 分享
发布于 2015-09-07 20:41
老哥,现在还在腾讯吗?
点赞 回复 分享
发布于 2022-08-12 18:10

相关推荐

11-03 14:38
重庆大学 Java
AAA求offer教程:我手都抬起来了又揣裤兜了
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务