首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

网易游戏2011.10.15校园招聘会笔试题

  • 25-03-02 17:02
  • 4236
  • 9931
blog.csdn.net

1、对于一个内存地址是32位、内存页是8KB的系统。0X0005F123这个地址的页号与页内偏移分别是多少。

页面大小是8KB,那么页内偏移量是从0x0000(0)~ 0x1FFF(2的13次方 - 1)。0x5F123/8K=2E,余数是1123;则页号是47页,页内偏移量应该是0X00001123。

2、如果X大于0并小于65536,用移位法计算X乘以255的值为:    (X<<8)-X

X<<8-X是不对的,因为移位运算符的优先级没有减号的优先级高,首先计算8-X为0,X左移0位还是8。

3、一个包含n个节点的四叉树,每个节点都有四个指向孩子节点的指针,这4n个指针中有   3n+1   个空指针。

4、以下两个语句的区别是:第一个动态申请的空间里面的值是随机值,第二个进行了初始化,里面的值为0

  1. int *p1 = new int[10];
  2. int *p2 = new int[10]();

5、计算机在内存中存储数据时使用了大、小端模式,请分别写出A=0X123456在不同情况下的首字节是,大端模式:0X12           小端模式:0X56           X86结构的计算机使用  小端    模式。

一般来说,大部分用户的操作系统(如windows, FreeBsd,Linux)是小端模式的。少部分,如MAC OS,是大端模式 的。

6、在游戏设计中,经常会根据不同的游戏状态调用不同的函数,我们可以通过函数指针来实现这一功能,请声明一个参数为int *,返回值为int的函数指针:

int (*fun)(int *)

7、下面程序运行后的结果为:to test something

  1. char str[] = "glad to test something";
  2. char *p = str;
  3. p++;
  4. int *p1 = static_cast<int *>(p);
  5. p1++;
  6. p = static_cast<char *>(p1);
  7. printf("result is %s\n",p);

8、在一冒险游戏里,你见到一个宝箱,身上有N把钥匙,其中一把可以打开宝箱,假如没有任何提示,随机尝试,问:

(1)恰好第K次(1= (1-1/n)*(1-1/(n-1))*(1-1/(n-2))***(1/(n-k+1)) = 1/n

(2)平均需要尝试多少次。

 这个就是求期望值   由于每次打开宝箱的概率都是1/n,则期望值为:   1*(1/n)+2*(1/n)+3*(1/n)+......+n*(1/n) = (n+1)/2

9、头文件中ifndef / define / endif 是做什么用的?
10、代码里有时可以看到extern “C”,这语句是做什么用的?
11、平均要取多少个(0,1)中的随机数才能让和超过1。

12、在下列乘法算式中,每个字母代表0~9的一个数字,而且不同的字母代表不同的数字:

 ABCDEFGH

*                 AJ

------------------

EJAHFDGKC

BDFHAJEC

------------------

CCCCCCCCC

请写出推导的过程。

本题唯一解为:A=2、B=4、C=6、D=9、E=1、F=3、G=5、H=8、J=7、K=0

13、输入格式:第一行输入N(N<=100)表示流通的纸币面额数量;第二行N个纸币的具体表示的面额,从小到大排列,取值【1,10^6】。
输出格式:输出一个整数,表示应该发行的纸币面额,这个整数是已经发行的所有纸币面额都无法表示的最小整数。(已经发行的每个纸币面额最多只能使用一次)

输入

输出

5

1 2 3 9 100

7

5

1 2 4 9 100

8

5

1 2 4 7 100

15

思路:这是一个典型的母函数问题,一般的典型母函数如 G(x)=  (1+x+x^2+x^3+x^4+x^5+....)*(1+x^2+x^4+x^6+x^8+x^10+....)*(1+x^3+x^6+x^9+x^12....).....

这个题目中的每个纸币只能够使用0次或1次,在上面的那个一般的母函数的基础上修改一下就行了,就很简单了。。

具体代码如下:

  1. #include
  2. using namespace std;
  3. const int lmax=10000;
  4. int c1[lmax+1],c2[lmax+1];
  5. int main(void)
  6. {
  7. int m,n,i,j,k,a[110];
  8. //计算的方法还是模拟手动运算,一个括号一个括号的计算,从前往后
  9. while (cin>>m && m)
  10. {
  11. n=0;
  12. for(i = 0; i < m; i++)
  13. {
  14. scanf("%d",&a[i]);
  15. n += a[i];
  16. }
  17. n += 5; //有可能无法表示的那个数比所有纸币面额的总和还要大
  18. for(i = 0; i <= n; i++)
  19. {
  20. c1[i] = 0;
  21. c2[i] = 0;
  22. }
  23. for(i = 0; i < 2*a[0]; i += a[0]) //母函数的表达式中第一个括号内的各项系数
  24. c1[i] = 1;
  25. //第一层循环是一共有 n 个小括号,而刚才已经算过一个了,所以是从2 到 n
  26. // i 就是代表的母函数中第几个大括号中的表达式
  27. for(i = 2; i <= m; i++)
  28. {
  29. for(j = 0; j <= n; j++) //j 就是指的已经计算出的各项的系数
  30. {
  31. for (k = 0; k < 2*a[i-1]; k += a[i-1]) //k 就是指将要计算的那个括号中的项
  32. {
  33. c2[j+k] += c1[j]; //合并同类项,他们的系数要加在一起,所以是加法
  34. }
  35. }
  36. for(j = 0; j <= n; j++) // 刷新一下数据,继续下一次计算,就是下一个括号里面的每一项
  37. {
  38. c1[j] = c2[j];
  39. c2[j] = 0;
  40. }
  41. }
  42. for(i = 1; i <= n; i++)
  43. {
  44. if(c1[i] == 0)
  45. {
  46. cout<//找出第一个无法表示的纸币面额
  47. break;
  48. }
  49. }
  50. }
  51. return 0;
  52. }

 

文章知识点与官方知识档案匹配,可进一步学习相关知识
C技能树首页概览156674 人正在系统学习中
注:本文转载自blog.csdn.net的hackbuteer1的文章"http://blog.csdn.net/hackbuteer1/article/details/6878570#"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top