[2018]试卷: 网易2018校园招聘编程题真题集合
[编程题] 魔法币
小易准备去魔法王国采购魔法神器,购买魔法神器需要使用魔法币,但是小易现在一枚魔法币都没有,但是小易有两台魔法机器可以通过投入x(x可以为0)个魔法币产生更多的魔法币。
魔法机器1:如果投入x个魔法币,魔法机器会将其变为2x+1个魔法币
魔法机器2:如果投入x个魔法币,魔法机器会将其变为2x+2个魔法币
小易采购魔法神器总共需要n个魔法币,所以小易只能通过两台魔法机器产生恰好n个魔法币,小易需要你帮他设计一个投入方案使他最后恰好拥有n个魔法币。
输入描述:
输入包括一行,包括一个正整数n(1 ≤ n ≤ 10^9),表示小易需要的魔法币数量。
输出描述:
输出一个字符串,每个字符表示该次小易选取投入的魔法机器。其中只包含字符’1’和’2’。
输入例子1:
10
输出例子1:
122
#include<iostream>
#include<string>
using namespace std; //实现魔法币
string magic(int n,string res){ while(n>0){ if(n%2==0){ res+='2'; n=(n-2)/2; } else{ res+='1'; n=(n-1)/2; } } return res;
} int main(){ int n; cin>>n; string res=""; res=magic(n,res); for(int i=res.size()-1;i>=0;i--) cout<<res[i]; return 0;
}
[编程题] 相反数
为了得到一个数的”相反数”,我们将这个数的数字顺序颠倒,然后再加上原先的数得到”相反数”。例如,为了得到1325的”相反数”,首先我们将该数的数字顺序颠倒,我们得到5231,之后再加上原先的数,我们得到5231+1325=6556.如果颠倒之后的数字有前缀零,前缀零将会被忽略。例如n = 100, 颠倒之后是1.
输入描述:
输入包括一个整数n,(1 ≤ n ≤ 10^5)
输出描述:
输出一个整数,表示n的相反数
输入例子1:
1325
输出例子1:
6556
#include<iostream>
#include<string>
using namespace std;
char nums[10]={'0','1','2','3','4','5','6','7','8','9'}; int oppsite(int num){ int data=num; int temp=num; string s=""; while(num!=0){ temp=num%10; s=s+nums[temp]; num/=10; } bool flag=true; temp=0; for(int i=0;i<s.size();i++){ if(s[i]!='0'&&flag==true) flag=false; if(s[i]!='0'||flag==false){ temp=temp*10+(s[i]-'0'); } } temp=temp+data; return temp;
} int main(){ int num; cin>>num; cout<<oppsite(num);
}
[编程题] 字符串碎片
一个由小写字母组成的字符串可以看成一些同一字母的最大碎片组成的。例如,”aaabbaaac”是由下面碎片组成的:’aaa’,’bb’,’c’。牛牛现在给定一个字符串,请你帮助计算这个字符串的所有碎片的平均长度是多少。
输入描述:
输入包括一个字符串s,字符串s的长度length(1 ≤ length ≤ 50),s只含小写字母(‘a’-‘z’)
输出描述:
输出一个整数,表示所有碎片的平均长度,四舍五入保留两位小数。
如样例所示: s = “aaabbaaac”
所有碎片的平均长度 = (3 + 2 + 3 + 1) / 4 = 2.25
输入例子1:
aaabbaaac
输出例子1:
2.25
#include<iostream>
#include<string>
#include<iomanip>
using namespace std; void components(string s,int n){ int temp=1; for(int i=0;i<n-1;i++){ if(s[i]!=s[i+1]){ temp++; } } cout<<fixed<<setprecision(2)<<(float)n/temp;
} int main(){ string res; cin>>res; components(res,res.size()); return 0;
}
[编程题] 游历魔法王国
魔法王国一共有n个城市,编号为0~n-1号,n个城市之间的道路连接起来恰好构成一棵树。
小易现在在0号城市,每次行动小易会从当前所在的城市走到与其相邻的一个城市,小易最多能行动L次。
如果小易到达过某个城市就视为小易游历过这个城市了,小易现在要制定好的旅游计划使他能游历最多的城市,请你帮他计算一下他最多能游历过多少个城市(注意0号城市已经游历了,游历过的城市不重复计算)。
输入描述:
输入包括两行,第一行包括两个正整数n(2 ≤ n ≤ 50)和L(1 ≤ L ≤ 100),表示城市个数和小易能行动的次数。
第二行包括n-1个整数parent[i](0 ≤ parent[i] ≤ i), 对于每个合法的i(0 ≤ i ≤ n - 2),在(i+1)号城市和parent[i]间有一条道路连接。
输出描述:
输出一个整数,表示小易最多能游历的城市数量。
输入例子1:
5 2
0 1 2 3
输出例子1:
3
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std; void traversal(int n,int L,vector<int> &parent){ int maxlen=0; vector<int> dp(n); for(int i=0;i<n-1;i++){ dp[i+1]=dp[parent[i]]+1; maxlen=max(maxlen,dp[i+1]); //使用贪心算法计算最长链的长度 } int validpath=min(maxlen,L); cout<<min(n,1+validpath+(L-validpath)/2);
}
int main(){ int n,L; cin>>n>>L; vector<int> parent; for(int i=0;i<n-1;i++){ int temp; cin>>temp; parent.push_back(temp); } traversal(n,L,parent); return 0;
}
[编程题] 重排数列
小易有一个长度为N的正整数数列A = {A[1], A[2], A[3]…, A[N]}。
牛博士给小易出了一个难题:
对数列A进行重新排列,使数列A满足所有的A[i] * A[i + 1](1 ≤ i ≤ N - 1)都是4的倍数。
小易现在需要判断一个数列是否可以重排之后满足牛博士的要求。
输入描述:
输入的第一行为数列的个数t(1 ≤ t ≤ 10),
接下来每两行描述一个数列A,第一行为数列长度n(1 ≤ n ≤ 10^5)
第二行为n个正整数A[i](1 ≤ A[i] ≤ 10^9)
输出描述:
对于每个数列输出一行表示是否可以满足牛博士要求,如果可以输出Yes,否则输出No。
输入例子1:
2
3
1 10 100
4
1 2 3 4
输出例子1:
Yes
No
#include<iostream>
using namespace std;
int main()
{int t;cin>>t;int n;int a[100000];while(t){int mod2=0;int mod4=0;cin>>n;for(int i=0; i<n; i++){cin>>a[i];}for(int i=0; i<n; i++){if(a[i]%4==0)mod4++;else if(a[i]%2==0)mod2++;}if(mod4>=(n-mod2-mod4))cout<<"Yes"<<endl;elsecout<<"No"<<endl;t--;}
}
[编程题] 最长公共子括号序列
一个合法的括号匹配序列被定义为:
- 空串”“是合法的括号序列
- 如果”X”和”Y”是合法的序列,那么”XY”也是一个合法的括号序列
- 如果”X”是一个合法的序列,那么”(X)”也是一个合法的括号序列
- 每个合法的括号序列都可以由上面的规则生成
例如”“, “()”, “()()()”, “(()())”, “(((()))”都是合法的。
从一个字符串S中移除零个或者多个字符得到的序列称为S的子序列。
例如”abcde”的子序列有”abe”,”“,”abcde”等。
定义LCS(S,T)为字符串S和字符串T最长公共子序列的长度,即一个最长的序列W既是S的子序列也是T的子序列的长度。
小易给出一个合法的括号匹配序列s,小易希望你能找出具有以下特征的括号序列t:
1、t跟s不同,但是长度相同
2、t也是一个合法的括号匹配序列
3、LCS(s, t)是满足上述两个条件的t中最大的
因为这样的t可能存在多个,小易需要你计算出满足条件的t有多少个。
如样例所示: s = “(())()”,跟字符串s长度相同的合法括号匹配序列有:
“()(())”, “((()))”, “()()()”, “(()())”,其中LCS( “(())()”, “()(())” )为4,其他三个都为5,所以输出3.
输入描述:
输入包括字符串s(4 ≤ |s| ≤ 50,|s|表示字符串长度),保证s是一个合法的括号匹配序列。
输出描述:
输出一个正整数,满足条件的t的个数。
输入例子1:
(())()
输出例子1:
3
#include <stdio.h>
#include <algorithm>
#include <string>
#include <set>using namespace std;char str[55];void read() {scanf("%s", str);
}bool test(const string& s) {int cnt = 0;for (int i = 0; s[i]; ++i) {s[i] == '(' ? ++cnt : --cnt;if (cnt < 0) {return false;}}return true;
}void work() {set<string> record;for (int i = 1; str[i+1]; ++i) {string tmp(str);tmp.erase(i, 1);for (int j = 1; str[j]; ++j) {if (str[i] == str[j]) continue;string s(tmp);s.insert(j, 1, str[i]);if (test(s)) {record.insert(s);}}}printf("%lu\n", record.size());
}int main() {read();work();return 0;
}
[编程题] 合唱
小Q和牛博士合唱一首歌曲,这首歌曲由n个音调组成,每个音调由一个正整数表示。
对于每个音调要么由小Q演唱要么由牛博士演唱,对于一系列音调演唱的难度等于所有相邻音调变化幅度之和, 例如一个音调序列是8, 8, 13, 12, 那么它的难度等于|8 - 8| + |13 - 8| + |12 - 13| = 6(其中||表示绝对值)。
现在要对把这n个音调分配给小Q或牛博士,让他们演唱的难度之和最小,请你算算最小的难度和是多少。
如样例所示: 小Q选择演唱{5, 6}难度为1, 牛博士选择演唱{1, 2, 1}难度为2,难度之和为3,这一个是最小难度和的方案了。
输入描述:
输入包括两行,第一行一个正整数n(1 ≤ n ≤ 2000) 第二行n个整数v[i](1 ≤ v[i] ≤ 10^6), 表示每个音调。
输出描述:
输出一个整数,表示小Q和牛博士演唱最小的难度和是多少。
输入例子1:
5
1 5 6 2 1
输出例子1:
3
#include <stdio.h>
#include <stdlib.h>typedef long long llong;inline void getMin(llong& n, llong x) {n > x && (n = x);
}#define MAXN 2020int n;
int v[MAXN], cost[MAXN];void read() {scanf("%d%d", &n, v);for (int i = 1; i < n; ++i) {scanf("%d", v + i);cost[i] = abs(v[i] - v[i - 1]);}
}llong dp[MAXN][MAXN];void work() {llong res = (1ll << 63) - 1;for (int i = 2; i < n; ++i) {// dp[i][0] = dp[i - 1][0] + cost[i];dp[i][i - 1] = dp[i - 1][i - 2] + cost[i - 1];}for (int i = 2; i < n; ++i) {for (int j = 0; j < i - 1; ++j) {dp[i][j] = dp[i - 1][j] + cost[i];getMin(dp[i][i - 1], dp[i - 1][j] + abs(v[i] - v[j]));}}for (int i = 0; i < n - 1; ++i) {getMin(res, dp[n - 1][i]);}printf("%lld\n", res);
}int main() {read();work();return 0;
}
[编程题] 射击游戏
小易正在玩一款新出的射击游戏,这个射击游戏在一个二维平面进行,小易在坐标原点(0,0),平面上有n只怪物,每个怪物有所在的坐标(x[i], y[i])。小易进行一次射击会把x轴和y轴上(包含坐标原点)的怪物一次性消灭。
小易是这个游戏的VIP玩家,他拥有两项特权操作:
1、让平面内的所有怪物同时向任意同一方向移动任意同一距离
2、让平面内的所有怪物同时对于小易(0,0)旋转任意同一角度
小易要进行一次射击。小易在进行射击前,可以使用这两项特权操作任意次。
小易想知道在他射击的时候最多可以同时消灭多少只怪物,请你帮帮小易。
如样例所示:
所有点对于坐标原点(0,0)顺时针或者逆时针旋转45°,可以让所有点都在坐标轴上,所以5个怪物都可以消灭。
输入描述:
输入包括三行。
第一行中有一个正整数n(1 ≤ n ≤ 50),表示平面内的怪物数量。
第二行包括n个整数x[i](-1,000,000 ≤ x[i] ≤ 1,000,000),表示每只怪物所在坐标的横坐标,以空格分割。
第二行包括n个整数y[i](-1,000,000 ≤ y[i] ≤ 1,000,000),表示每只怪物所在坐标的纵坐标,以空格分割。
输出描述:
输出一个整数表示小易最多能消灭多少只怪物。
输入例子1:
5
0 -1 1 1 -1
0 -1 -1 1 1
输出例子1:
5
[2018]试卷: 网易2018校园招聘编程题真题集合相关推荐
- 2013校园招聘-阿里巴巴-笔试真题
阿里巴巴笔试回忆: 系统设计题: 大图导航系统: (1)现有大图1W张,像素:1024*4096.系统可以增加或者删除图片. (2)手机屏幕分辨率240*320.内存16M,手机本地存储256M.只能 ...
- 美图2018届校园招聘编程题(AC)
今天分享一下热乎乎的美图2018届校园招聘编程题的代码实现,详情如下. 首先揭秘一下四天前的智商题: 解答:再倒出一片A,然后把这四颗药片各自一分为二,吃每颗药片的一半,剩下的明天吃即可. 注:(如果 ...
- 网易 2019 秋季校园招聘编程题真题集合
网易 2019 秋季校园招聘编程题真题集合 第一题 俄罗斯方块 问题描述 小易有一个古老的游戏机,上面有着经典的游戏俄罗斯方块.因为它比较古老,所以规则和一般的俄罗斯方块不同. 荧幕上一共有 n 列, ...
- 2011-2012年腾讯,创新工场,淘宝,百度,阿里,迅雷。网易游戏校园招聘面试题集锦(1-25题含答案)
2011-2012年腾讯,创新工场,淘宝,百度,阿里,迅雷.网易游戏校园招聘面试题集锦(1-25题含答案) 又是一年招聘季,小鸟我也在本季参加招聘,所以特在网上和群里面这里去年和今年的面试题,以备战招 ...
- 网易2019实习生招聘编程题集合
前言 利用周末时间做了这套网易2019实习生招聘编程题,链接如下: 题目链接 成绩 先来看一下博主的成绩,打了67分,完全做对了4道题,另外的4道题中1道题完成了80%,1道题完成了30%.评价一下就 ...
- 网易2019实习生招聘编程题集合 矩形重叠
网易2019实习生招聘编程题 矩形重叠 题目链接:https://www.nowcoder.com/test/9763997/summary [编程题] 矩形重叠 时间限制:1秒 空间限制:32768 ...
- 2018年10月计算机专业英语自考真题,自考试卷:2018年10月00012英语(一)自考真题及答案...
通过自考历年真题练习可以让考生更有把握的面对考试,对题型更加熟悉,从而取得更佳的成绩.以下是自考生网为考生们整理了"2018年10月00012英语(一)自考真题及答案". 注:不同 ...
- 计算机体系结构考试题及知识点,2018年10月自考02325计算机系统结构真题及答案...
小编给大家提供的是2018年10月自考02325计算机系统结构真题及答案,大家可以参考下,毕竟历年真题比试题和背知识点有效果. 2018年 10 月高等教育自学考试全国统一命题考试 计算机系统结构试卷 ...
- 02325计算机系统结构201810,2018年10月自考02325计算机系统结构真题及答案
以下是湖南自考生网为考生们整理的"2018年10月自考02325计算机系统结构真题及答案",考生可通过自考历年真题练习更有把握的面对考试,对题型更加熟悉,从而取得更佳的成绩.供考生 ...
- 【软考系统架构设计师】2018下系统架构师综合知识历年真题
[软考系统架构设计师]2018下系统架构师综合知识历年真题 [2018下架构真题第一题:绿色] 01.在磁盘调度管理中,应先进行移臂调度,再进行旋转调度.假设磁盘移动臂位于21号柱面上,进程的请求序列 ...
最新文章
- mysql 一周一月_mysql查询当天、本周,本月,上一个月的数据
- 【运筹学】匈牙利法 ( 匈牙利法示例 2 | 第一步 : 变换系数矩阵 | 第二步 : 试指派 | 行列打√ | 直线覆盖 | 第二轮试指派 )
- 机器学习算法与Python实践之(五)k均值聚类(k-means)
- Java用TCP手写聊天室 可以 私聊版加群聊版
- qmake生成VS的vcproj/sln工程文件
- MySQL中事务控制语句_Mysql事务控制语言
- XM7 FOR ANDROID,如何使用Android Studio开发Gradle插件
- hibernate课程 初探单表映射1-2 ORM定义
- 每日一句:We are a happy crew in our office.
- 深入浅出Python——Python高级语法之面向对象
- eclipse 如何查看Java源码
- 官宣,C罗回归曼联,签约两年,豪华阵容曝光
- endnotex8使用教程_EndnoteX8快速使用详细步骤
- Android Studio 配置 NDK 开发编译环境
- 微信检测器 微信过滤工具
- 2020.10-2021.01前端开发部分总结
- Intellij IDEA 强大的搜索能力
- python3 输出 26个大小写英文字母
- (待补充)【读书笔记】20190809《运营之光》——黄有璨
- 9.4 双向深度循环神经网络
热门文章
- OpenCV C++ 通过Websocket发送摄像头图片到Web端
- 深度学习合成歌曲的入门资源:论文和样本、资源、入门教程
- 那些让你敬佩万分奉若圭臬的话,你认为有哪些?
- 西工大NOJ数据结构理论——010.k阶斐波那契数列(严3.32)
- java word格式 导出图表和表格 浏览器下载 支持生成扇形图,条形图等
- 使用dwr3.0实现服务端向浏览器做消息推送,做滚动评论或弹幕效果,而且根据视频id做推送消息拦截功能
- 重走长征路---OI每周刷题记录---11月16日 2013
- 我对爱情的小理解与秀恩爱
- [Unity3D]Unity3D游戏开发之跑酷游戏项目讲解
- ubuntu系统关机、重启等命令