猿辅导 2019 校招技术笔试题总结

1.猿辅导公司某研发小组一共有 12 名同学,其中 9 人能做后端开发,6 人能做前端开发。现在要抽调 4 名同学成立项目小组,负责公司的一项“机密”项目。其中 2 名同学做后端开发,2 名同学做前端开发。有多少种选派方法?

解答:

2.猿辅导公司某部门月会上,有 5 名同学在依次领取入职周年的礼物,一束鲜花。HR 共准备有 5 种不同颜色的鲜花供他们挑选。则有且仅有两名同学挑选了相同颜色的鲜花的概率是多少?

解答:共有5*5*5*5*5=3125种情况,再算有且只有两个人选同一种颜色的情况, 1.选出两个人C52=10; 2.选同一种颜色有5种情况; 3.其他3个人从剩下4种颜色选:4*3*2=24. 共有10*5*24=1200 概率为1200/3125=48/125.

3.某天猿辅导 HR 组织大家去漂流,早上,参加团建的同学都到齐了,并且按到达公司的先后顺序排好队了。 由于员工太多,一个大巴车坐不下,需要分多个车,车是足够的,但所有人需要按一定顺序上车,按如下规则安排上车的顺序:

假设大巴车容量为 m,从队首开始,每 m 个人分成一个小组,每个小组坐一辆车。同时只有一个车打开车门供员工上车。 小组之间按从队尾到队首顺序依次上车,同一小组内先到的同学先上,求所有人上车的顺序。

例如: 员工数 8, 车容量 3, 员工到达顺序为 1 2 3 4 5 6 7 8, 3个人一个小组,分三个小组, 小组一: 1, 2, 3, 小组二: 4, 5, 6,小组三: 7,8。 小组上车顺序为: 小组三,小组二,小组一 。 所有员工上车顺序为 7 8 4 5 6 1 2 3

方案1:将原输入分为几个小组,然后依次输出,使用vector<vector<int>> 来保存。

#include <iostream>

#include <vector>

using namespace std;

int main(){

int mCount, cCount;

cin >> mCount;

cin >> cCount;

vector<int> member;

for (int i = 0; i<mCount; i++){

int t;

cin >> t;

member.push_back(t);

}

vector<vector<int>> result;

int length= mCount/cCaption;   //大巴的数量

if(mCount % cCaption){

length++;

}

for (int i = 0; i<length; i++){

int j;

vector<int> tmp;  //为局部变量

for (j = 0; j<cCount; j++){

if (i*cCount + j < mCount){

tmp.push_back(member[i*cCount + j]);

}

}

result.push_back(tmp);

}

for (int i = result.size()-1; i >= 0; i--){

for (int j = 0; j<result[i].size(); j++){

cout << result[i][j] << " ";

}

}

return 0;

}

方案2:

比如 员工到达顺序为 1 2 3 4 5 6 7 8,车容量为3个人,所以是3组,现在数组存的就是 int[] ps={1 2 3 4 5 6 7 8};
     分为三组的情况下:
     第一组123第二组456第三组78
     所以只需将每一组中的设置两个标识位begin和end,
     然后将begin和end值互换即可
     比如第一组123,开始时begin=0,end=2,然后将ps[0]和ps[2]互换
     然后再将begin++,end--。
     互换的次数就有每一组的数量来决定=每一组的数量/2
     最终每一组互换之后就会得到3 2 1 6 5 4 8 7,只需再倒序输出即可

#include <iostream>

#include <vector>

using namespace std;

int main(){

int mCount,cCaption;

cin>>mCount;

cin>>cCaption;

vector<int> member;

for(int i=0;i<mCount;i++){

int tmp;

cin>>tmp;

member.push_back(tmp);

}

int cCount = mCount/cCaption;

if(mCount % cCaption){

cCount++;

}

for(int i=0;i<cCount;i++){

int begin = i*cCaption;

int end = begin + cCaption -1;

if(end >= mCount){

end = mCount-1;

}

while(begin < end){

int tmp = member[begin];

member[begin] = member[end];

member[end] = tmp;

begin++;

end--;

}

}

for(int i=mCount-1;i>=0;i--){

cout<<member[i]<<" ";

}

cout<<endl;

return 0;

}

4.拍照队形

猿辅导公司的 N位(N>=4)研发同学组织了一次秋游活动,某同学带了个无人机在高空拍照,活动结束时,先拍了一张所有同学排成公司猴头Logo的照片, 接着有人提议再排成“猿”的首字母Y字形来拍一张合照。

用字符串中的每一个字符(不是换行符或结束符'\0')代表一位老师,输出排好后的队形。要求 Y字除去中心点外,上下半部分等高,按照从左到右,从上到下进行排序。队形中没人的部分用空格占位。

输入数据保证可以排出一个完整的Y字,即长度为 3k+1 (k>=1)

例如: 7个 x ,排成队形为(为了方便说明,这里用‘-’代替空格):

x---x

-x-x

--x

--x

--x

方案:

k的值就是标志Y的两个部分的分界线,我们要做的就是分两个部分进行打印,上半部分(行数=k)和下半部分(行数=k+1).
首先看上半部分:
  上半部分的输出其实就是首先是每一行的第一个x前面输出a个空格,再输出x,然后中间去输出b个空格,再输出x;关键就是我们去确定a和b;大家可以看上面的找出规律,每一行每一行的第一个x前面输出a个空格a=i(i为当前每行的行数,从0开始);中间去输出b个空格,这个b=2*(k-i)-1(i为当前每行的行数,从0开始);之后再输出a个空格。
  下半部分直接就是打印每一行的第一个i前面输出a个空格,这个a=k

#include <iostream>

#include <string>

using namespace std;

void printN(int num){

for(int i=0;i<num;i++){

cout<<" ";

}

}

int main(){

int N;

cin>>N;

getchar();  //清空缓冲区的回车

string str;

getline(cin,str);

int k = (N-1)/3;

int top = k;

int below = k+1;

int index = 0;

for(int i=0;i<top;i++){

printN(i);

cout<<str[index++];

printN(2*(k-i) - 1);

cout<<str[index++];

printN(i);

cout<<endl;

}

for(int i=0;i<below;i++){

printN(k);

cout<<str[index++]<<endl;

}

return 0;

}

参考链接:

https://www.nowcoder.com/questionTerminal/1b1f87ef6e7d40529d82c96aef79e8a4

https://www.nowcoder.com/test/question/done?tid=26316130&qid=309673#summary

猿辅导-2019-校招笔试相关推荐

  1. 猿辅导2019校招技术类笔试题(题目出的很好)

    1.猿辅导公司某研发小组一共有 12 名同学,其中 9 人能做后端开发,6 人能做前端开发.现在要抽调 4 名同学成立项目小组,负责公司的一项"机密"项目.其中 2 名同学做后端开 ...

  2. 多益网络2019校招笔试

    多益网络2019届校招笔试 从n个数中取k个数,相加等于m,有多少种方法 final static int[] arr = {1, 2, 3, 4, 5, 6, 7};final static int ...

  3. 华三2019校招笔试

    算法笔试 由20道英文选择题 5道英文名词解释 和5个大题 英文选择题主要涉及基础知识 5个英文名词解释  有  Maximum likelihood ; Decision Tree;Stochast ...

  4. 猿辅导2019 编程两道

    第一题 巴士乘车 有n个人,每辆车m人,按一组m人分组,乘车时从后往前按组上车 第一行:输入n,m 第二行:输入n个人 输入:12345678 输出:78456123 #!/usr/bin/pytho ...

  5. 京东校招java笔试题_试卷: 京东2019校招笔试Java开发工程师笔试题(1-)

    D 把资源事先分类编号,按号分配,使进程在申请,占用资源时不会形成环路. 解析:死锁:在多道程序设计环境下,多个进程可能竞争一定数量的资源,.一个进程申请资源,如果资源不可用,那么进程进入等待状态.如 ...

  6. 商汤科技自动驾驶研究员2019校招笔试第一题-跳台阶(每次可跳1~m级,跳到第n级的跳法总数)

    递推公式如下: n<=m时 v[n]=2<<(n-2) n>m时 v[n]=2*v[n-1]-v[n-1-m] 输入n超过10^18,考虑是维护一个供迭代的双向队列做动态规划, ...

  7. 2019年秋招猿辅导笔试编程题解析字符串

    猿辅导笔试 编程题的解析字符串 5 A11B (AA)2A ((A2B)2)2G (YUANFUDAO)2JIAYOU A2BC4D2 输入如上,按照规则解析字符串 研究了下用栈写出来了,其实不难,加 ...

  8. 猿辅导校招技术类笔试题

    猿辅导校招技术类笔试题 2019年 大巴车 这道题还挺简单的,题干也写了,数组按块翻转,块内保持不变 import java.util.*; public class Main {public sta ...

  9. 20200801猿辅导笔试记录

    20200801猿辅导笔试记录 重复的课程 发奖品   最近比较忙,没太多时间,所以题目写的略微粗略一些. 重复的课程 输入N表示N节课,接下来输入N行每行输入课程的开始时间和结束时间,求最多的时候有 ...

最新文章

  1. 软件工程 团队博客分数 (第一阶段)
  2. python编程软件例子-软件开发|10 个 Python 图像编辑工具
  3. 数据结构常见算法原理讲解100篇(一)-递归和分治算法原理及案例应用
  4. 学习Java开发难不难?好学吗?
  5. 《WebGIS开发实践手册》2.2 ArcIMS服务器组件[1]
  6. python中factor函数_Python入门-函数
  7. 十二 Spring的AOP开发入门,整合Junit单元测试(AspectJ的XML方式)
  8. 人工智能,现在门槛这么低了吗?
  9. Cocos2d—X游戏开发之VS2010 控制台输出中文,模拟器中文乱码问题解决
  10. Could not autowire. No beans of ‘UserMapper‘ type found.
  11. [附源码]计算机毕业设计JAVAjsp高校奖学金评定管理系统
  12. KDEUnivariate.fit 参数详解
  13. Aria2c 使用举例
  14. php论坛mybb,MyBB
  15. 哥德巴赫猜想python版
  16. java进程和ksoftirqd进程的CPU突然涨高的原因
  17. 苹果教你如何保持iPhone电池健康、延长电池寿命
  18. 每日案例(第四期):智慧金融08-10 | 知识图谱实践案例集(速读版)
  19. HWiNFO32无法加载
  20. 网页图片提取-免费在线任意网页图片提取软件

热门文章

  1. 【原创文章】PHP+MySQL 创建表单并将表单数据写入数据库中。
  2. 信息学奥赛一本通1055《判断闰年》C++方法+Python方法
  3. 如何修改Bash Shell的提示符的格式和配色
  4. 免费资源分享(六) Unity3D 雷达实时定位插件
  5. 焦虑症和植物神经紊乱是同一种疾病吗
  6. Sky Computing
  7. 关于计算机的职业畅想,我的职业畅想作文
  8. 我就这样忍了一生——星云大师
  9. 【FreeRTOS】
  10. 360快传号,会成为下一个自媒体风口吗?