2014年华为杭研所实习生招聘机考题目
2014-03-27 11:45
169 查看
前三题是第一次的:
第一题(60分)
思路:
降序排列输入的数,然后取出第6个数,如果大于等于60,及格线就是60,否则就是 (n/10)*10
代码如下:
第二题(100分)
思路:
分三种情况考虑就好了,如果是7对的话,我采用的是检测逗号的个数;四归一就检测牌数,多两个字符的话就翻倍。
代码如下:
第三题(160分)
思路:
可以采用回溯法,我这里没有,简单的写了下就满分通过了。大家自己看吧
代码如下:
还有去公司机考的三题,不能拷回来,所以我回头再更新一下:
第一题(60分)
10个学生考完期末考试评卷完成后,A老师需要划出及格线,要求如下: (1) 及格线是10的倍数; (2) 保证至少有60%的学生及格; (3) 如果所有的学生都高于60分,则及格线为60分: | |
运行时间限制: | 无限制 |
内存限制: | 无限制 |
输入: | 输入10个整数,取值0~100 |
输出: | 输出及格线,10的倍数 |
样例输入: | 61 51 49 30 20 10 70 80 90 99 |
样例输出: | 50 |
降序排列输入的数,然后取出第6个数,如果大于等于60,及格线就是60,否则就是 (n/10)*10
代码如下:
#include <iostream> #include <algorithm> #include <stdio.h> #include <stdlib.h> #include <vector> using namespace std; bool compare(int a,int b) { return a>b; } int main() { int n,jige; int m=10; vector<int> vec; while(m--) { cin>>n; vec.push_back(n); } sort(vec.begin(),vec.end(),compare); vector<int>::iterator it=vec.begin(); if(*(it+5)>=60) jige=60; else jige=(*(it+5)/10)*10; cout<<jige; system("pause"); return 0; }
第二题(100分)
计算麻将的番数 麻将游戏越来越受到大家喜爱,也在网络上盛行。本题目是给定一组已经和牌的麻将,编写一个函数计算这组麻将的番数。为简化题目,假设麻将只有筒子和条子两种花型,能翻番的规则也只有以下三种,当一组牌中没有下述三种情况中的一种或多种,则这组牌为0番,每种番数是加的关系,例如一组牌既有卡2条又有四归一,则番数为3番。 1.卡2条为一番,即有一局牌是 1条2条3条; 2.四归一为两番,即有4张一样的牌(花色和数字都一样); 3.巧七对为两番,即一组牌恰好是7对牌; 一些约定: 1.一组已经和牌的麻将由多局牌组成,一局牌可以是一对牌、3张连续同样花色的牌、3张一样的牌、4张一样的牌。 2.一组已经和牌一般有14张牌,最多可以有18张牌(当有四归一的时候)。 | |
运行时间限制: | 无限制 |
内存限制: | 无限制 |
输入: | 一字符串表示已经和牌的麻将(由输入者保证,编程人员无需考虑没有和牌),如1T2T3T,4T5T6T,7T8T9T,1D2D3D,4D4D. 说明: 1.”1T”表示1条,T表示条子,前面跟数字几表示几条,数据范围1~9,输入者保证,编程无需考虑输入规范性; 2.”4D”表示4筒,D表示筒子,前面跟数字几表示几筒,数据范围是1~9, 输入者保证,编程无需考虑输入规范性; 3.每局牌之间由’,’隔开,输入者保证每局牌都是正确的且按照数字由小到大排序,编程人员无需判断每局牌的正确性; 4.一组牌以’.’号结束,由输入者保证,编程人员无需考虑是否有”.”号。 5.输入保证有番数的牌在一局中,编程人员无需考虑排序,即有番数的牌不会分散在多局牌中。 |
输出: | 麻将的番数,整型类型。 |
样例输入: | 1T2T3T,4T5T6T,7T8T9T,1D2D3D,4D4D. |
样例输出: | 1 |
分三种情况考虑就好了,如果是7对的话,我采用的是检测逗号的个数;四归一就检测牌数,多两个字符的话就翻倍。
代码如下:
#include <iostream> #include <algorithm> #include <stdio.h> #include <stdlib.h> #include <vector> #include <string> using namespace std; int main() { char a[50]; int cnt=0,len; cin>>a; len=strlen(a); cnt+=len-33; int cnt_douhao=0; for(int i=0;i<len;i++) { if(a[i]==',') cnt_douhao++; if(a[i]=='1' && a[i+1]=='T' && a[i+2]=='2' && a[i+4]=='3') cnt++; } if(cnt_douhao==6) cout<<2; else cout<<cnt; system("pause"); return 0; }
第三题(160分)
Word Maze 是一个网络小游戏,你需要找到以字母标注的食物,但要求以给定单词字母的顺序吃掉。如上图,假设给定单词if,你必须先吃掉i然后才能吃掉f。 但现在你的任务可没有这么简单,你现在处于一个迷宫Maze(n×m的矩阵)当中,里面到处都是以字母标注的食物,但你只能吃掉能连成给定单词W的食物。 如下图,指定W为“SOLO”,则在地图中红色标注了单词“SOLO”。 注意区分英文字母大小写,你只能上下左右行走。 | |
运行时间限制: | 无限制 |
内存限制: | 无限制 |
输入: | 输入第一行包含两个整数n、m(0<n, m<21)分别表示n行m列的矩阵,第二行是长度不超过100的单词W,从第3行到底n+3行是只包含大小写英文字母的长度为m的字符串。 |
输出: | 如果能在地图中连成给定的单词,则输出“YES”,否则输出“NO”。注意:每个字母只能用一次。 |
样例输入: | 5 5 SOLO CPUCY EKLQH CRSOL EKLQO PGRBC |
样例输出: | YES |
可以采用回溯法,我这里没有,简单的写了下就满分通过了。大家自己看吧
代码如下:
#include <iostream> #include <algorithm> #include <stdio.h> #include <stdlib.h> #include <vector> #include <string> using namespace std; int main() { int n,m; char a[100]; char b[100][21]; cin>>n>>m>>a; int len_w=strlen(a); int p,q; for(int i=0;i<n;i++) for (int j=0;j<m;j++) { cin>>b[i][j]; if(b[i][j]==a[0]) { p=i; q=j; } } int flag=1; for(int k=1;k<len_w;k++) { if(b[p-1][q]==a[k]) p-=1; else if(b[p+1][q]==a[k]) p+=1; else if(b[p][q-1]==a[k]) q-=1; else if(b[p][q+1]==a[k]) q+=1; else { cout<<"NO"; flag=0; break; } } if(flag) cout<<"YES"; system("pause"); return 0; }
还有去公司机考的三题,不能拷回来,所以我回头再更新一下:
相关文章推荐
- 金山wps公司2014年实习生招聘“c++工程师”笔试题目
- 易互娱2017实习生招聘在线笔试第一场题目1 : 电子数字
- 网易互娱2017实习生招聘在线笔试第一场题目解析
- 2014-03-29.阿里实习生招聘笔试题目
- 2014年实习生招聘之多益网络实习生招聘笔试题—2014/04/17
- 阿里巴巴2014年实习生笔试题目
- 腾讯2014年实习生招聘笔试面试经历
- 小米2014年校园招聘笔试题目(排队问题)
- 阿里巴巴2014年实习生校园招聘面经(复试)
- 华为校园招聘笔试题(机考题目)
- 腾讯2014年实习生招聘笔试面试经历(转)
- 记CVTE2014年春季招聘实习生求职历程
- 网易互娱2017实习生招聘在线笔试第一场 题目1 : 电子数字
- 腾讯2014年实习生招聘笔试面试经历
- 2014-03-29.阿里实习生招聘笔试题目
- 腾讯2014年实习生招聘笔试面试经历
- 2014年实习生招聘之杭州华三通信技术有限公司实习生招聘部分笔试题—2014/04/10
- 2013年微软实习生招聘笔试题目(c/c++你懂多少?)
- 2013年大众点评实习生招聘笔试题目
- 【IT企业笔试集】2013年阿里巴巴实习生招聘笔试题目及解答