华为机试
文章平均质量分 70
华为公司历年来校招机试题,整理出题目,并且给出代码解决和结果测试。
小地盘
这个作者很懒,什么都没留下…
展开
-
华为校招机试—传送门
华为机试—多个数的最大公约数华为机试—算日期华为机试—拼音翻译成阿拉伯数字(只有数字拼音)华为机试—拼音翻译成阿拉伯数字(有Wan,Qian,Bai,Shi单位)华为机试—输出大写字母华为机试—亮着电灯的盏数(优化过的双重for)华为机试—从考试成绩中划出及格线华为机试—亮着电灯的盏数(1—N完全平方数的个数)华为机试—大数相减华原创 2015-02-13 17:38:25 · 21554 阅读 · 0 评论 -
华为机试—整型数组中出现次数最多的元素
取出整型数组中出现次数最多的元素,并按照升序排列返回。要求实现方法: public static int[] calcTimes(int[] num, int len);【输入】 num:整型数组; len :输入的整数个数【返回】 按照升序排列返回整型数组中出现次数最多的元素【注意】只需要完成该函数功能算法,中间不需要有任何IO的原创 2015-01-04 00:34:22 · 2384 阅读 · 0 评论 -
华为机试—字符串首字母转换成大写
举例:输入:this is a book返回:This Is A Book#include#include#includeint main(){ char input[]="this is a book"; char output[256]={'\0'}; int i,len; len=strlen(input); printf("变换前的字符串为:%s原创 2015-01-12 00:12:16 · 3009 阅读 · 0 评论 -
华为机试—数字逆序且求个位数乘积
#include #include using namespace std;//逆序string revs(string s){ int j = s.length()-1; int i=0; char t; while(i<j){ t = s[i]; s[i++]=s[j]; s[j--]=t; } return s;}//个位乘积int chen(原创 2015-01-05 00:20:28 · 2454 阅读 · 8 评论 -
华为机试—字符串过滤
题目:字符串过滤通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。比如字符串“abacacde”过滤结果为“abcde”。 要求实现函数: void stringFilter(const char *pInputStr, long lInputLen, char *pOutputStr)原创 2014-12-27 15:50:18 · 2072 阅读 · 1 评论 -
华为机试—选秀节目评分
题目:选秀节目评分选秀节目打分,分为专家评委和大众评委,score[]数组里面存储每个评委打的分数,judge_type[] 里存储与 score[] 数组对应的评委类别,judge_type[i] == 1,表示专家评委;judge_type[i] == 2,表示大众评委,n表示评委总数。打分规则如下:专家评委和大众评委的分数先分别取一个平均分(平均分取整),然后原创 2014-12-26 12:08:10 · 2370 阅读 · 1 评论 -
华为机试—元素按奇偶排序 (金字塔)
题目:元素按奇偶排序给定一个数组input[],如果数组长度n为奇数,则将数组中最大的元素放到 output[]数组最中间的位置,如果数组长度n为偶数,则将数组中最大的元素放到 output[]数组中间两个位置偏右的那个位置上,然后再按从大到小的顺序,依次在最大元素放置的那个位置的两边,按照一左一右的顺序,依次存放剩下的数。例如:input[] = {3,原创 2014-12-25 15:49:06 · 2576 阅读 · 6 评论 -
华为机试—大数相减
题目:大数相减输入两行字符串正整数,第一行是被减数,第二行是减数,输出第一行减去第二行的结果。 备注:1、两个整数都是正整数,被减数大于减数 示例: 输入:1000000000000001 1 输出:1000000000000000#include #include #define MA原创 2014-12-25 12:34:04 · 2778 阅读 · 0 评论 -
华为机试—算日期
题目:算日期输入一个日期,输出这是这一年的第几天。(题目中没有给出闰年的定义)输入 20131231输出 365#include //判断是否为闰年int isleapyear(int year) { if(year%4==0 && year%100!=0 || year%400==0) return 1; r原创 2014-12-24 09:53:28 · 2832 阅读 · 0 评论 -
华为机试—从考试成绩中划出及格线
题目:从考试成绩中划出及格线10个学生考完期末考试评卷完成后,A老师需要划出及格线,要求如下:(1) 及格线是10的倍数;(2) 保证至少有60%的学生及格;(3) 如果所有的学生都高于60分,则及格线为60分 输入:输入10个整数,取值0~100输出:输出及格线,10的倍数#include #include int compare原创 2014-12-25 09:42:52 · 5194 阅读 · 2 评论 -
华为机试—拼音翻译成阿拉伯数字(有Wan,Qian,Bai,Shi单位)
题目:拼音翻译成阿拉伯数字输入一串拼音,输出它代表的阿拉伯数字(Ling,Yi,Er,San,Si,Wu,Liu,Qi,Ba,Jiu),数字不会超过十万为了处理方便,输入一定是数字带单位的,例如10会是YiShi,而不是一个单独的Shi. 输入 JiuWanJiuQianJiuBaiJiuShiJiu输出 99999基本思路:遍历找到下一个大写字母,截取子串,比原创 2014-12-24 17:25:17 · 3928 阅读 · 0 评论 -
华为机试—亮着电灯的盏数(1—N完全平方数的个数)
题目:亮着电灯的盏数一条长廊里依次装有n(1≤n≤65535)盏电灯,从头到尾编号1、2、3、…n-1、n。每盏电灯由一个拉线开关控制。开始,电灯全部关着。有n个学生从长廊穿过。第一个学生把号码凡是1的倍数的电灯的开关拉一下;接着第二个学生把号码凡是2的倍数的电灯的开关拉一下;接着第三个学生把号码凡是3的倍数的电灯的开关拉一下;如此继续下去,最后第n个学生把号码凡是n的原创 2014-12-25 10:12:24 · 3228 阅读 · 0 评论 -
华为机试—四则运算(数组解决)
题目:四则运算问题描述:输入一个只包含个位数字的简单四则运算表达式字符串,计算该表达式的值注:3.1、表达式只含 +, -, *, / 四则运算符,不含括号3.2、表达式数值只包含个位整数(0-9),且不会出现0作为除数的情况3.3、要考虑加减乘除按通常四则运算规定的计算优先级3.4、除法用整数除法,即仅保留除法运算结果的整数部分。比如8/3=2。输入表达式保证无0作为原创 2014-12-26 11:11:43 · 3681 阅读 · 2 评论 -
华为机试—操作系统任务调度
题目:操作系统任务调度问题操作系统任务分为系统任务和用户任务两种。其中, 系统任务的优先级 = 50且 现有一任务队列task[],长度为n,task中的元素值表示任务的优先级,数值越小,优先级越高。 函数scheduler实现如下功能: 将task[] 中的任务按照系统任务、用户任务依次存放到 system_task[] 数组和 user_task[] 数组中原创 2014-12-27 15:38:29 · 2726 阅读 · 0 评论 -
华为机试—正整数加减运算式
题目:正整数加减运算式通过键盘输入100以内正整数的加、减运算式,请编写一个程序输出运算结果字符串。 输入字符串的格式为:“操作数1 运算符 操作数2”,“操作数”与“运算符”之间以一个空格隔开。 补充说明: 1. 操作数为正整数,不需要考虑计算结果溢出的情况。 2. 若输入算式格式错误,输出结果为“0”。 要求实现函数: void arithmetic原创 2014-12-27 15:53:11 · 2110 阅读 · 2 评论 -
华为机试—从5个人中选取2个人作为礼仪
要从5个人中选取2个人作为礼仪,其中每个人的身高范围为160-190,要求2个人的身高差值最小(如果差值相同的话,选取其中最高的两人),以升序输出两个人的身高。Sample input: 161 189 167 172 188 Sample output: 188 189#include #include int compare(const void *p原创 2015-01-01 14:23:31 · 2506 阅读 · 0 评论 -
华为机试—字符串M化成以N为单位的段
按要求分解字符串,输入两个数M,N,M代表输入的M串字符串,N代表输出的每串字符串的位数,不够补0。例如:输入:2 8 abc 123456789,输出:abc00000 12345678,90000000#include #include int main(){ char c[100]; int m,n,i,j原创 2015-01-03 11:44:17 · 2549 阅读 · 0 评论 -
华为机试—相同子串
输入一个字符串,判断是否含有相同的子串(字串长度大于1),是输出1,否,输出0。例如12312含有两个12,所以输出1;23456则没有相同子序列,输出0.输入:12312输出:1#include#include using namespace std;int main(){ string s; while(cin>>s){ int len=s.s原创 2015-01-04 00:35:20 · 2267 阅读 · 0 评论 -
华为机试—约瑟夫环
输入人数n,开始位置s ,间隔数多少个m,输出出局序列#include #include using namespace std;void Out(int n,int s,int m){ vector people; for (int i=1;i<=n;i++) { people.push_back(i); } int start = s-1; int原创 2015-01-04 00:42:42 · 2233 阅读 · 0 评论 -
华为机试—单词计数
输入一段文章,输出最高频与次高频的单词(全部小写,逗号分隔)。文章中仅出现空格,逗号和句号这三种分隔符。不考虑频率一致的情况。忽略大小写。输入:I am a student.I come from XiDian,I love XiDian.输出:i,xidian#include #include #include using namespace std原创 2015-01-05 00:10:47 · 2229 阅读 · 0 评论 -
华为机试—最长回文子串
输入一个字符串,输出最长回文子串。当最长回文子串不止一个时,全部输出。#include #include using namespace std;#define N 100string convert(string s){ string out=""; int len=s.length(); for (int i=len-1;i>=0;i--) {原创 2015-01-06 00:06:23 · 2170 阅读 · 4 评论 -
华为机试—寻找丑数(由浅入深优化至20ms)
题目描述: 把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。输入: 输入包括一个整数N(1输出: 可能有多组测试数据,对于每组数据,输出第N个丑数。样例输入: 3样例输出: 3所谓原创 2015-01-08 14:01:16 · 2149 阅读 · 2 评论 -
华为机试—取石子游戏(高级题160分)
Problem Description1堆石子有n个,两人轮流取.先取者第1次可以取任意多个,但不能全部取完.以后每次取的石子数不能超过上次取子数的2倍。取完者胜.先取者负输出"Secondwin".先取者胜输出"Firstwin".Input输入有多组.每组第1行是2Output先取者负输出"Secondwin". 先取者胜输出"Firstwin". 参看Sample O原创 2015-01-08 14:38:13 · 2640 阅读 · 0 评论 -
华为机试—翻译电话号码
例如:输入:OneTwoThree 输出:123 输入:OneTwoDoubleTwo 输出:1222 输入:1Two2 输出:ERROR 输入:DoubleDoubleTwo 输出:ERROR 有空格,非法字符,两个Double相连,Double位于最后一个单词 都错误。#include原创 2015-01-09 14:28:12 · 2828 阅读 · 2 评论 -
华为机试—N皇后问题(高级题160分:两种回溯法解决 吐血整理)
一、问题描述: 在n×n格的棋盘上放置彼此不受攻击的n个皇后。按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。n后问题等价于再n×n的棋盘上放置n个皇后,任何2个皇后不妨在同一行或同一列或同一斜线上。输入: 给定棋盘的大小n (n ≤ 13) 输出: 输出有多少种放置方法。二、解题思路: 要解决N皇后原创 2015-01-09 16:11:13 · 7875 阅读 · 4 评论 -
华为机试—物品放箩筐(高级题160分,含体积价值:贪心算法)
#include using namespace std;int m[100][100];int min(int a,int b){ return (a<b)?a:b;}int max(int a,int b){ return (a>b)?a:b;}void knapsack(int v[],int w[],int c,int n){ int jMax=mi原创 2015-01-11 00:44:58 · 2734 阅读 · 1 评论 -
华为机试—添加符号使等式成立(高级题160分)
输入一个正整数X,在下面的等式左边的数字之间添加+号或者-号或者不填,使得等式成立。1 2 3 4 5 6 7 8 9 = X比如:12-34+5-67+89 = 51+23+4-5+6-7-8-9 = 5请编写程序,统计满足输入整数的所有等式个数。输入: 正整数,等式右边的数字输出: 使该等式成立的个数原创 2015-01-12 00:03:41 · 3287 阅读 · 4 评论 -
华为机试—围棋吃子(下围棋)判决(高级题160分:深度优先遍历)(图文吐血整理)
题目:围棋中,一个棋子在棋盘上,与它直接紧邻的空点是这个棋子的“气”,棋子直接紧邻的点上,如果有同色妻子存在,则它们便相互组成一个不可分割的整体,它们的“气”也应一并计算。如果一个或一片棋子的“气”为0,那它们将被吃掉。1. 一个棋子的情况,如下左图,白棋右侧还有一个空点,此时白棋气为1,不会被吃掉。当黑棋在此空点下棋后,白棋气为0,将被吃掉。2. 一片棋子的情况,如下图,原创 2015-01-12 00:14:51 · 21646 阅读 · 7 评论 -
华为机试—计算麻将的番数(高级题160分)
一.题目如下二.题目分析麻将和牌有两种形式,即:模式1 :11,11,11,11,11,11,11 模式2: 11,123,123,123,123(全部或者部分123可以被111,1111替代) 注:123=连续3张同花色牌,如4D5D6D。111=3张同样的牌,如3T3T3T。 条=T,筒=D 模式1即称之为“巧7对原创 2015-01-13 12:11:04 · 4110 阅读 · 3 评论 -
华为机试—九宫格(高级题160分,广度优先遍历)
基本思路:广度优先遍历,每次找到1的位置,分别向上、向下、向左、向右移动。把移动后的每个状态存储到队列中,弹出队头,判断是否为最终结果状态,如果是,输出遍历的层数(即移动步数),如果不是,把现阶段状态继续执行找到1向上向下向左向右移动操作。#includetypedef struct MyType{ int number[3][3];int level;}MyType;原创 2015-01-15 22:04:21 · 4021 阅读 · 1 评论 -
华为机试—约瑟夫环替换计数器m(循环链表解决)
题目描述:输入一个由随机数组成的数列(数列中每个数均是大于0的整数,长度已知),和初始计数值m。从数列首位置开始计数,计数到m后,将数列该位置数值替换计数值m,并将数列该位置数值出列,然后从下一位置从新开始计数,直到数列所有数值出列为止。如果计数到达数列尾段,则返回数列首位置继续计数。请编程实现上述计数过程,同时输出数值出列的顺序比如:输入的随机数列为:3,1,2,4,初始原创 2015-01-20 16:55:45 · 2646 阅读 · 5 评论 -
华为机试—子串分离
题目描述: 通过键盘输入任意一个字符串序列,字符串可能包含多个子串,子串以空格分隔。请编写一个程序,自动分离出各个子串,并使用’,’将其分隔,并且在最后也补充一个’,’并将子串存储。 如果输入“abc def gh i d”,结果将是abc,def,gh,i,d, 要求实现函数: void DivideString(const char *pInputS原创 2015-01-07 00:05:48 · 2380 阅读 · 4 评论 -
华为机试—姓名的夫妻相
题目:夫妻相在中国,形容夫妻恩爱的词汇中,大家用的比较多的就是“夫妻相”。所谓“夫妻相”,就是两个人看上去比较般配,长相、身材等某些方面有一定的相似度。本题则另辟蹊径,从人的姓名维度,以字母重复个数来寻找最具“夫妻相”的人。题目中预先给定一组女士的姓名拼音。输入男士的姓名拼音(拼音中间可以有空格,字母全部小写),依预先给定姓名拼音的先后遍历所有姓名,输出字母重复数最多的女士姓名。原创 2014-12-25 14:14:25 · 4672 阅读 · 0 评论 -
华为机试—地铁换乘(图文吐血整理)
题目:地铁换乘描述:已知2条地铁线路,其中A为环线,B为东西向线路,线路都是双向的。经过的站点名分别如下,两条线交叉的换乘点用T1、T2表示。编写程序,任意输入两个站点名称,输出乘坐地铁最少需要经过的车站数量(含输入的起点和终点,换乘站点只计算一次)。地铁线A(环线)经过车站:A1 A2 A3 A4 A5 A6 A7 A8 A9 T1 A10 A11 A12 A13 T2 A14原创 2014-12-26 08:38:39 · 20764 阅读 · 3 评论 -
华为机试—整数相除
两个整数相除,将结果用字符串返回。如果是循环小数,将循环的位用括号括起来。函数原型为 void div(const int a,const int b,char *str)输入:1 3输出:0.(3)#include#includeusing namespace std;int maxn = 100; //设置字符串的最大位数int reminder_原创 2015-01-04 00:40:23 · 17487 阅读 · 5 评论