logo资料库

华为2015 2014机试 笔试 试题及上机注意事项.doc

第1页 / 共9页
第2页 / 共9页
第3页 / 共9页
第4页 / 共9页
第5页 / 共9页
第6页 / 共9页
第7页 / 共9页
第8页 / 共9页
资料共9页,剩余部分请下载后查看
1.注意事项
1.如何参加考试
2.程序怎样取得输入、进行输出
3.系统返回信息含义
4.注意事项
2.例题
1.记票统计
1>描述:
2>答案:
2.笨笨熊搬家交通篇
1>描述:
2>答案
3.好友关系管理
1>描述
1.注意事项 1.如何参加考试 第一步: 点击导航栏的【考试】,进入考试列表页面 第二步: 找到要参加的考试后,点击操作一栏的【参加考试】 第三步: 参加成功后,页面跳转到答题主页面,点击题目标题进入答题页面 第四步: 选择答题语言后,在输入框中答题
第五步: 答题完毕后,点击【提交】按钮,提交答案 2.程序怎样取得输入、进行输出 你的程序应该从标准输入 stdin('Standard Input')获取输入,并将结果输出到标准输出 stdout('Standard Output'). 例如,在 C 语言可以使用 'scanf' ,在 C++可以使用'cin' 进行输入;在 C 使用 'printf' , 在 C++使用'cout'进行输出. 用户程序不允许直接读写文件, 如果这样做可能会判为运行时错误 "Runtime Error"。 参考 C++: C: Java: #include using namespace std; int main(){ int a,b; while(cin >> a >> b) cout << a+b << endl; return 0; } #include int main(){ int a,b; while(scanf("%d %d",&a, &b) != EOF) printf("%d\n",a+b); return 0; }
import java.util.*; public class Main{ public static void main(String args[]){ Scanner cin = new Scanner(System.in); int a, b; while (cin.hasNext()){ a = cin.nextInt(); b = System.out.println(a + b); } } } cin.nextInt(); 3.系统返回信息含义 等待:系统忙,你的答案在排队等待 等待重判:因为数据更新或其他原因,系统将重新判你的答案 编译中:正在编译 运行中:正在运行和判断 正确:程序通过 格式错误:答案基本正确,但是格式不对 答案错误:答案不对,仅仅通过样例数据的测试并不一定是正确答案,一定还有你没想到的 地方 时间超限: 运行超出时间限制,检查下是否有死循环,或者应该有更快的计算方法 内存超限:超出内存限制,数据可能需要压缩,检查内存是否有泄露 输出超限:输出超过限制,你的输出比正确答案长了两倍 运行错误:非法的内存访问,数组越界,指针漂移,调用禁用的系统函数 编译错误:编译错误,请点击后获得编译器的详细输出 4.注意事项 1. 每道题最多只能提交 5 次; 2. 程 序 从 标 准 输 入 stdin('Standard Input') 获 取 输 入 , 并 将 输 出 结 果 输 出 到 标 准 输 出 stdout('Standard Output')。
3. 输入输出均不能含有任何提示信息; 4. 测试平台的编译内核为 VS2005 及 JDK1.7 。使用 Java 答题时,类名必须为"Main",不要 使用 package 关键字声明;使用 C/C++答题时,请使用 VS2005 支持的数据类型和函数; 5. 代码中不允许有任何文件操作; 6. 提交答案时请提交全部代码,包括 main 函数和所有子函数; 7. 建议您在本地编译完成后再到考试系统中提交; 8. 答案提交后,点击状态可以查看判题结果及相应提示; 9. 信息注册环节不可跳过,否则无法导出成绩。 2.例题 1.记票统计 1>描述: 模拟 n 个人参加选举的过程,并输出选举结果:假设候选人有四人,分别用“A”、”B”、” C”、”D”表示,选举时开始计票, 若输入的不是“A”、”B”、”C”、”D”则视为无效票。选 举结束后获取各个候选人的得票数以及无效票的个数,输出结果以添加候选人的顺序进行顺 序输出,最后一行为无效的数量。同时 getVoteResult 命令为结束命令。 运行时间限制: 无限制 内存限制: 无限制 输入: 输入为多行形式输入,每一行为一条命令。输入的命令只会是有效命令不会有非法 命令,但可能存在非法的投票,上面已经描述了。 添加候选人的命令如下:addCandidate 为命令 xx1 为候选人 addCandidate xx1 投票的命令如下:vote 为命令 xx1 为候选人的字符串 vote xx1 统计投票的命令如下:getVoteResult 为命令 getVoteResult 输出: 输出结果以添加候选人的顺序进行顺序输出,最后一行为无效的数量。 样例输入: addCandidate xx1 addCandidate xx2 addCandidate xx3 addCandidate xx4 addCandidate xx5 addCandidate xx6 vote xx1 vote xx3 vote xx4 vote xx1 vote xx2 vote xx7 vote xx4 vote xx5 vote xx3 vote xx2 vote xx1 vote xx7 getVoteResult 样例输出: 11 12 13 14 15 16 17 18 19 20 xx1 3 1 2 3 4 5 6 7 8 9 10
21 22 23 xx2 2 xx3 2 xx4 2 2>答案: 24 25 26 xx5 1 xx6 0 2 #include "stdafx.h" #include #include #include using namespace std; }; int main() 1 2 3 4 5 6 7 {8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 { struct Candidate string name; int res; int i; int num=0; int usless=0; Candidate candi[256]; string cmd,cnt; for(i=0;i<256;i++) candi[i].res=0; usless=0; while(1) { cin>>cmd; if(cmd=="addCandidate") { 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 cin>>cnt; candi[num].name=cnt; num++; } if(cmd=="vote") { } cin>>cnt; for(i=0;i描述: 森林里的苯苯熊要乔迁新喜,上次他已经将物品打包完成,并约了朋友来帮忙。接下来 他要选定一个搬家的时间,想了很久,就决定在国庆节进行,因为国庆放假朋友们都有时间 啦。但是在森林里,从他现在房子到新豪宅,所经之地有山有水,路途曲折,甚至有些道路 是不通的。 请你和他一起查看指定的地图,看看从笨笨熊现在的房子到新宅之间,道路是否是畅通 的呢?
地图是 R 行、C 列的矩阵,矩阵的每一个格子刚好是一天的行程。 矩阵由“B”、“-”、“#”、“H”四种字符成员组成,其中: B: 代表苯苯熊现在的房子; H: 代表笨笨熊新的豪宅; -: 代表可以通行的道路; #: 代表无法通过的障碍(高山、大河等); 此外,森林里也有交通规则地:在任务位置,只能向“上、下、左、右”四个方向中的 其中一个方向行走。 运行时间限制: 无限制 内存限制: 无限制 输入: 4 // R 的数值 4 // C 的数值,下面是地图。 --##--- B-----H #---#-- ------- 输出: Y //代表道路可达 或 N //代表道路不通 样例输入: 1 5 -B-H# 样例输出: Y 2>答案 #include #include using namespace std; struct MAP_tree char name; int size; MAP_tree *up; MAP_tree *down; MAP_tree *left; MAP_tree *right; 1 2 3 4 5 {6 7 8 9 10 11 12 13 14 15 }; string res="N"; 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 void upOrder(MAP_tree *map) { if(map->size==1&&map->name!='#') { map->size=0; if(map->name=='H') { } res="Y"; if((map->up)!=NULL) upOrder(map->up); if((map->right)!=NULL) upOrder(map->right); if((map->down)!=NULL)
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 cin>>cnt[i]; for(i=0;i>i; return 0; } 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 upOrder(map->down); if((map->left)!=NULL) upOrder(map->left); } } int main() { int old_r=0,old_c=0; int R;//hang int C; //lie cin>>R; cin>>C; int i,j; MAP_tree map[50][50]; for(i=0;i<50;i++) for(j=0;j<50;j++) { } map[i][j].down=NULL; map[i][j].left=NULL; map[i][j].right=NULL; map[i][j].up=NULL; map[i][j].size=1; string cnt[50]; for(i=0;i描述 现有一个社交网站,其好友推荐策略为:用户 A 和用户 B 不是好友,当二人的共同好 友数量超过好友推荐阈值 m 时,就向 A 和 B 分别推荐为彼此好友。 本题任务为:对设定的 m 值,给定一组用户及各自好友列表,对这一组用户,反复自 动应用上述好友推荐策略后(假设每次推荐都被采纳),求指定用户的最终好友列表。 注:好友关系是双向的,即:如果用户 A 是用户 B 的好友,那么用户 B 一定也是用户 A 的 好友。 写一个程序,在社交网络中实现: 1)初始化社交网络 2)创建用户
3)增加指定两个用户之间的好友关系 4)反复自动应用好友推荐策略后,获取某个用户的好友数量 5)反复自动应用好友推荐策略后,判断某两个用户间是否存在好友关系 说明: 1、一个用户有且只有一个名字,且不存在重名 2、自己和自己不存在好友关系 3、用户名字大小写敏感 4、用户名字字符串长度范围为[1..20] 5、用户总数小于 100 个 运行时间限制: 无限制 内存限制: 无限制 输入: 五个整数,好友推荐阈值 P,创建用户数量 m,增加指定两个用户之间的好友关系数量 M, 查询某个用户的好友数量 n,查询指定两个用户是否是好友 N 字符串,每个数据一行,按到 上面的顺序依次输入数据,共 m+M+n+N 行字符串 字符串,每个一行,共 m+M+n+N 行字符串 输出: 输出用户的好友数量,共 n 个,每个一行;如果用户不存在,输出-1,否则输出好友数量。 样例中的用户 Jack、Peter、Tom 的好友数量都是 2 个。 输出指定两个用户是否是好友,共 N 个,每个一行,如果是输出 0,否则输出-1。样例中的 用户 Jack 与 Peter、Peter 与 Tom、Jack 与 Tom 都是好友关系,所有输出 0。 样例输入: 2 3 3 3 3 Jack Peter Tom Jack Peter Peter Tom Jack Tom Jack Peter Tom Jack Peter Peter Tom Jack Tom 样例输出: 2 2 2 0
分享到:
收藏