2月15号参加的网易游戏实习在线笔试(内推),以为会考小题的,背了一天计算机网络和操作系统,结果拿到题只有4道编程大题,囧~如果没有一点算法竞赛的知识,想拿下来还是挺困难的。(网易游戏应该算国内笔试很难的了)

题目地址:https://www.nowcoder.com/test/4111169/summary
1.字符串编码
输入描述:
每个测试输入包含1个测试用例
每个测试用例输入只有一行字符串,字符串只包括大写英文字母,长度不超过10000。
输出描述:
输出编码后的字符串
输入例子:
AAAABCCDAA
输出例子:
4A1B2C1D2A

思路分析:这道题好像以前是一家企业的面试题,LeetCode Easy级别,思路弄清楚,10分钟AC。

#include <cstdio>
#include <string>
#include <iostream>using namespace std;string num = "0123456789";string intToString( int n ) {string str = "";while( n ) {str = num[n % 10] + str;n = n / 10;}return str;
}string solve( string str ) {int len = str.size();int i = 0;char cur;int cnt;string ans = "";while( i < len ) {cur = str[i];cnt = 0;int j = 0;for( j = i; j < len; j++ ) {    // 从当前位置开始检索if( str[j] == cur ) {cnt++;}else if( str[j] != cur ) {ans = ans + intToString( cnt );ans = ans + cur;i = j;                      // 从i = j这个位置再开始检索//cout << ans << endl;break;}}if( j == len ) {ans = ans + intToString( cnt );ans = ans + cur;//cout << ans << endl;break;}}return ans;
}int main() {string str;while( cin >> str ) {string ans = solve( str );cout << ans << endl;}return 0;
}

2.最大和

输入描述:
每个测试输入包含1个测试用例,第一行包括两个整数 N 和 D :
3 <= N <= 100
1 <= D <= N
接下来有N行,每行N个数字d:
0 <= d <= 100
输出描述:
输出一个整数,表示找到的和的最大值
输入例子:
4 2
87 98 79 61
10 27 95 70
20 64 73 29
71 65 15 0
输出例子:
193

思路分析:这道题数据量比较小,只有100,所以暴力枚举即可(注意要搞清楚逻辑再写,写40多分钟都有可能的)。另外可以用dp的想法,维护前缀和。

#include <cstdio>#define MAX 100 + 10int Max = 0;bool check1( int x, int y, int d, int n ) {if( x + d - 1 > n ) return false;if( y + d - 1 > n ) return false;return true;
}bool check2( int x, int y, int d, int n ) {if( x + d - 1 > n ) return false;if( y - d < 0 ) return false;return true;
}int main() {//freopen( "123.txt", "r", stdin );int n, d;while( scanf( "%d%d", &n, &d ) != EOF ) {Max = 0;int arr[MAX][MAX];for( int i = 1; i <= n; i++ ) {for( int j = 1; j <= n; j++ ) {scanf( "%d", &arr[i][j] );}}// 先从每行开始找for( int row = 1; row <= n; row++ ) {for( int i = 1; i <= n - d + 1; i++ ) {int sum = 0;for( int j = i; j < d + i; j++ ) {//printf( "add %d %d\n", row, j );sum = sum + arr[row][j];}if( sum > Max ) Max = sum;//printf( "%d\n", sum );}}// 再从每列开始找for( int col = 1; col <= n; col++ ) {for( int i = 1; i <= n - d + 1; i++ ) {int sum = 0;for( int j = i; j < d + i; j++ ) {//printf( "add %d %d\n", j, col );sum = sum + arr[j][col];}if( sum > Max ) Max = sum;//printf( "%d\n", sum );}}// 再从左上到右下对角线开始找for( int i = 1; i <= n; i++ ) {for( int j = 1; j <= n; j++ ) {     // 从i,j起点开始找int x = i;int y = j;if( check1( x, y, d, n ) ) {//printf( "从 %d %d开始\n", x, y );int cnt = 0;int sum = 0;while( cnt < d ) {sum = sum + arr[x][y];cnt++;x++;y++;}//printf( "%d\n", sum );if( sum > Max ) Max = sum;}}}// 再从右上到左下对角线开始找for( int i = 1; i <= n; i++ ) {for( int j = 1; j <= n; j++ ) {     // 从i,j起点开始找int x = i;int y = j;if( check2( x, y, d, n ) ) {//printf( "从 %d %d开始\n", x, y );int cnt = 0;int sum = 0;while( cnt < d ) {sum = sum + arr[x][y];cnt++;x++;y--;}if( sum > Max ) Max = sum;//printf( "%d\n", sum );}}}printf( "%d\n", Max );}return 0;
}

3.推箱子

大家一定玩过“推箱子”这个经典的游戏。具体规则就是在一个N*M的地图上,有1个玩家、1个箱子、1个目的地以及若干障碍,其余是空地。玩家可以往上下左右4个方向移动,但是不能移动出地图或者移动到障碍里去。如果往这个方向移动推到了箱子,箱子也会按这个方向移动一格,当然,箱子也不能被推出地图或推到障碍里。当箱子被推到目的地以后,游戏目标达成。现在告诉你游戏开始是初始的地图布局,请你求出玩家最少需要移动多少步才能够将游戏目标达成。

输入描述:
每个测试输入包含1个测试用例
第一行输入两个数字N,M表示地图的大小。其中0<N,M<=8。
接下来有N行,每行包含M个字符表示该行地图。其中 . 表示空地、X表示玩家、*表示箱子、#表示障碍、@表示目的地。
每个地图必定包含1个玩家、1个箱子、1个目的地。
输出描述:
输出一个数字表示玩家最少需要移动多少步才能将游戏目标达成。当无论如何达成不了的时候,输出-1。
输入例子:
4 4
....
..*@
....
.X..
6 6
...#..
......
#*##..
..##.#
..X...
.@#...
输出例子:
3
11

思路分析:考查搜索。但是我当时没写出来,这道题只过了3个测试点。说一下别人的思路:

1.DFS,不知道他怎么写的,判断条件应该比较复杂吧。

2.BFS,四维BFS,增加两个维度代表箱子的位置(我当时考试只想到三维了,没想到四维,豁然开朗。。下去再练练)

去年有一道也是推箱子,不过那个是纯模拟,简单一点。有兴趣的可以在hihoCoder上看一下。

(代码暂时没有)

4.赛马

在一条无限长的跑道上,有N匹马在不同的位置上出发开始赛马。当开始赛马比赛后,所有的马开始以自己的速度一直匀速前进。每匹马的速度都不一样,且全部是同样的均匀随机分布。在比赛中当某匹马追上了前面的某匹马时,被追上的马就出局。 请问按以上的规则比赛无限长的时间后,赛道上剩余的马匹数量的数学期望是多少

输入描述:
每个测试输入包含1个测试用例
输入只有一行,一个正整数N
1 <= N <= 1000
输出描述:
输出一个浮点数,精确到小数点后四位数字,表示剩余马匹数量的数学期望
输入例子:
1
2
输出例子:
1.0000
1.5000

思路分析:题目看上去有点费解,个人更感觉像是一道智力题。我们假设有N匹马赛跑,最后剩下的那个是冠军。注意题目中说每个马的速度不一样,这就说明最后只会剩下一个马,不可能出现并列的情况。另外数学期望的意思就是如果这匹马的编号是i,那P(i)表示i是冠军的概率,就是数学期望。可以这样想一下:如果只有一匹马,那么这匹马肯定是冠军,数学期望显然是1。如果有两匹马,那么某一匹马是冠军的概率是0.5,某一时刻其中一个马被淘汰了,那么另一个马的数学期望变成1,相加就是1.5。依次类推,如果刚开始有N匹马,P(i) = 1 / N,某一时刻P(i) = 1 / (N - 1)、1/(N - 2)......所以这道题的答案就是计算1 + 1  /  2 + 1 / 3 + 1 / 4 + ... + 1 / N的和,就是调和级数。

另外见群里有ACM大神说根据某某定理,先打个表,然后高精度运算得出结果,没听懂他的做法。我感觉调和级数这个还是好理解的。

#include <cstdio>int main() {int n;while( scanf( "%d", &n ) != EOF ) {double sum = 0.0;for( int i = 1; i <= n; i++ ) {sum = sum + 1.0 / i;}printf( "%.4lf\n", sum );}return 0;
}

2018网易游戏雷火盘古实习生招聘笔试真题相关推荐

  1. 2017网易游戏雷火盘古实习生招聘笔试真题

    1.给定一个字符串,请你将字符串重新编码,将连续的字符替换成"连续出现的个数+字符".比如字符串AAAABCCDAA会被编码成4A1B2C1D2A. #include<std ...

  2. 2017网易游戏雷火盘古实习生招聘笔试:字符串编码

    题目来源:伯乐在线 题目: 给定一个字符串,请你将字符串重新编码,将连续的字符替换成"连续出现的个数+字符".比如字符串AAAABCCDAA会被编码成4A1B2C1D2A. 输入描 ...

  3. 2017百度实习生招聘笔试真题编程题集合

    1,买帽子 AC代码如下: import java.util.HashSet; import java.util.Scanner; import java.util.Set; import java. ...

  4. 京东2016实习生招聘笔试真题-技术岗位选择题A

    今天是本学期第一次系统性的完成公司面试真题,或许已经偏晚了,希望以博客的形式把一些经常用到的算法或概念进行自我梳理与记忆. 1.gets是得到一整行的字符串; getchar是得到一个字符: scan ...

  5. 网易游戏雷火2020春招web前端工程师笔试卷0425

    网易游戏雷火2020春招web前端工程师笔试卷0425 考试信息 笔试题型 详情 单选 不定项 编程题 问答题 考试信息 招聘单位:网易游戏雷火事业群校园招聘 岗位:前端开发工程师 回复时间:2020 ...

  6. 2021网易游戏雷火2021春招游戏功能测试工程师 笔试记录----春招补录

    目录 2021网易游戏雷火2021春招游戏功能测试工程师 笔试记录----春招补录 单选题 逻辑题 问:最坏情况下,教授问到第几个学生,学生才知道自己头顶帽子的颜色? 2021网易游戏雷火2021春招 ...

  7. 齐商银行计算机岗面试题,2018齐商银行社会招聘笔试(真题笔经)

    原标题:2018齐商银行社会招聘笔试(真题笔经) [中公金融人银行招聘网]提醒:2018齐商银行社会招聘笔试考试内容真题演练见以下正文.中公金融人为考生提供最新银行招聘时间预测.齐商银行招聘公告报考条 ...

  8. 网易游戏雷火防护工程师(测开)实习面经 | 掘金技术征文

    杭州双非渣硕.前段时间师兄内推雷火,没有笔试直接打电话约我去面试了,地点在网易大厦.早上不到七点起床,晚上七点多才回到宿舍,可以说是很疲惫了. 本来面试现场投影上写的上午三轮交叉面,如果通过的话下午一 ...

  9. 2018年9月网易游戏雷火防护工程师秋招线下笔试

    1.选择题,很多,都是单选.考察了TCP/IP,逻辑题,数字找规律题,数据结构(链表,图,二叉树),死锁,软件测试(黑盒白盒),C语言函数输出是什么,网络用语,哪个不是网易的游戏.难度不是很大,稍微复 ...

最新文章

  1. java将0到9随机输出_生成0到9之间的随机整数
  2. android listview下拉刷新动画,ListView下拉刷新实现方式详解和改造(上)
  3. mysql单源多表同步单库单表_MySQL主从复制单表或者多表
  4. svn+http+ad域
  5. 链表相关的面试题型总结
  6. 三角形外接球万能公式_宏程序不是万能的,没有宏程序是不能的,一款通用宏分享给大家!...
  7. 拓端tecdat|R语言在逻辑回归中求R square R方
  8. 清除回收站苦闷纠结欣喜
  9. 淘淘商城第34讲——内容管理
  10. Java Swing实现简易计算器
  11. ECPC16-A.The game of Osho(博弈)
  12. php控制舵机,分享一个关于SG90舵机的实验(+串口控制)
  13. Android手机界面组成
  14. 艾美智能影库服务器ip,艾美影库 篇一:艾美影库 | 精评丨性能与资源可兼得 艾美MS-200 高清影库...
  15. CentOS 7 安装rar解压缩软件
  16. 平安科技-前端面试1
  17. 人工智能-深度学习Tensorflow2.0-python
  18. C# URL编码转换 URL转码 UrlDecode UrlEncode
  19. 微信分享后端接口简单实现
  20. android 自定义圆形裁剪框,android 头像裁剪控件

热门文章

  1. oracle数据的变更无效,ORA-22858:数据类型的变更无效varchar2类型转换为clob类型
  2. sql server 数据库向java接口推送数据
  3. IO多路复用机制详解
  4. php和mysql把时间为‘年月日时分秒’的格式转换为‘年月日‘
  5. Windows 7常见问答汇总一【2010.10】
  6. python目标识别算法_深度学习目标检测系列:一文弄懂YOLO算法|附Python源码
  7. 图文并茂 VLAN 详解,让你看一遍就理解 VLAN
  8. [转自itilxf论坛]iTop百问百答
  9. 利用java的JSoup爬虫技术爬取网页信息
  10. UpdateData()用法