
华为OJ算法研究篇
文章平均质量分 50
Voidwalkerxiaohui
西安电子科技大学CS硕士在读关注图像处理算法研究字典学习人工智能数学等学科研究方向希望结识更多同道中人
展开
-
HWOJ 挑7
HWOJ 挑7题目分析:就是需要找含有7的有关的数字,有可能是7的倍数或者含有7的数算法思路:①先找出7的倍数;②利用除10找余的方法找出含有7的数学习笔记:这里我们需要注意就是c中常用分离数字各位上的数用的方法就是%10 -> /10循环方法。===============================================原创 2014-07-04 12:04:51 · 814 阅读 · 0 评论 -
2014华为机试西安地区B组试题
2014华为机试西安地区B组试题题目一、亮着点灯的盏数一条长廊里依次装有n(1≤n≤65535)盏电灯,从头到尾编号1、2、3、…n-1、n。每盏电灯由一个拉线开关控制。开始,电灯全部关着。有n个学生从长廊穿过。第一个学生把号码凡是1的倍数的电灯的开关拉一下;接着第二个学生把号码凡是2的倍数的电灯的开关拉一下;接着第三个学生把号码凡是3的倍数的电灯的开关拉一下;如此继续下去,最后第原创 2014-07-09 09:42:48 · 2978 阅读 · 11 评论 -
华为招聘机试整理7:给定一个数组input[]
华为招聘机试整理7:给定一个数组input[]题目:给定一个数组intput[]如果数组长度n为奇数,则将数组中最大的元素放到 output[] 数组最中间的位置,如果数组长度n为偶数,则将数组中最大的元素放到 output[] 数组中间两个位置偏右的那个位置上,然后再按从大到小的顺序,依次在第一个位置的两边,按照一左一右的顺序,依次存放剩下的数。例如:input[] = {3,原创 2014-07-10 23:33:18 · 1770 阅读 · 0 评论 -
华为招聘机试整理2:判断一个数组的元素是否是回文
华为招聘机试整理2:判断一个数组的元素是否是回文题目:比较一个数组的元素,是否是回文数组题目分析:回文是指一种顺读和倒读都一样的单词。算法思路,我们直接通过一个外循环i= 0 -> len/2直接判断str[i]是否等于str[len-1-i]==============================================================原创 2014-07-10 02:24:13 · 1623 阅读 · 0 评论 -
华为招聘机试整理1:删除子串
华为招聘机试整理1:删除子串题目:删除子串题目描述:只要是原串中有相同的子串就删掉,不管有多少个,返回子串的个数。题目分析:我们对比该题与《HWOJ 在一个字符中删除第二个字符出现过的所有字符》《HWOJ 实现一个听高级的字符匹配算法》都是不一样的。一定要注意区分所以我们这道题不适合用哈希表来完成。我们可以利用指针来完成算法思路:①利用字符串str循环,之后原创 2014-07-09 12:23:20 · 1691 阅读 · 0 评论 -
华为招聘机试整理3:数组比较
华为招聘机试整理3:数组比较题目:数组比较题目描述:比较两个数组,要求从数组最后一个元素开始逐个元素向前比较,如果2个数组长度不等,则只比较较短长度数组个数元素。请编程实现上述比较,并返回比较中发现的不相等元素的个数比如:数组{1,3,5}和数组{77,21,1,3,5}按题述要求比较,不相等元素个数为0数组{1,3,5}和数组{77,21,1,3,5,7}按题述要求比原创 2014-07-10 02:28:49 · 1046 阅读 · 0 评论 -
华为招聘机试整理6:选秀节目打分
华为招聘机试整理6:选秀节目打分题目:选秀节目打分题目描述:为专家评委和大众评委,score[] 数组里面存储每个评委打的分数,judge_type[] 里存储与 score[] 数组对应的评委类别,judge_type[i] == 1,表示专家评委,judge_type[i] == 2,表示大众评委,n表示评委总数。打分规则如下:专家评委和大众评委的分数先分别取一个平均分(平均分取整原创 2014-07-10 15:57:31 · 2338 阅读 · 4 评论 -
华为招聘机试整理5:简单四则运算
华为招聘机试整理5:简单四则运算题目:简单四则运算问题描述: 输入一个只包含个位数字的简单四则运算表达式字符串,计算该表达式的值注:1、表达式只含 +, -, 乘, / 四则运算符,不含括号2、表达式数值只包含个位整数(0-9),且不会出现0作为除数的情况3、要考虑加减乘除按通常四则运算规定的计算优先级4、除法用整数除法,即仅保留除法运算结果的整数部分。比如8/3=原创 2014-07-10 12:07:43 · 1657 阅读 · 0 评论 -
HWOJ 字符串的排序
HWOJ 字符串的排序题目:字符串的排序题目描述:题目分析:①因为题目不分大小写,所以我们考虑用#include的toupper来转化成大写字母注意tolower是把大写转化为小写②之后非英文字母的不变,所以我们要有一个循环,当!isalpha时,直接循环加1,这里特别需要注意如果循环加1之后必须要小于len哦③关键在于第二点比较难,因为我们原创 2014-07-08 02:45:05 · 935 阅读 · 0 评论 -
华为招聘机试整理4:手机号码合法性判断
华为招聘机试整理4:手机号码合法性判断题目:手机号码合法性判断题目描述:我国大陆运营商的手机号码标准格式为:国家码+手机号码,例如:8613912345678。特点如下:1、 长度13位;2、 以86的国家码打头;3、 手机号码的每一位都是数字。请实现手机号码合法性判断的函数要求:1) 如果手机号码合法,返回0;2) 如果手机号码长度不合法,返回13原创 2014-07-10 02:30:10 · 1993 阅读 · 3 评论 -
2014华为机试西安地区A组试题
2014华为机试西安地区A组试题题目一、分苹果M个相同苹果放到N个相同篮子里有多少种放法,允许有篮子不放。1例如5个苹果三个篮子,3,1,1 和 1,1,3是同一种放法输入 7 3输出 8题目分析:这道题类似于整数划分的题目,这是很早的一道ACM的题目,主要思路就是考递归。①当苹果数目或者篮子数目为1时候,就只有一种可能②当苹果数目小于篮子数目的时候原创 2014-07-12 01:56:28 · 3099 阅读 · 0 评论 -
华为招聘机试整理12:合并字符串
华为招聘机试整理12:合并字符串题目:合并字符串编写一个程序实现功能:将两个字符串合并为一个字符串并且输出,用指针实现。char str1[20]={“Hello ”}, str2[20]={“World ”};题目分析:这道题就是简单考察双指针之间的连接算法思路:①我们先想找出原字符串的长度,所以必须先循环一下,求出p②之后直接循环目标字符串,并且直接把p =原创 2014-07-11 11:18:06 · 1132 阅读 · 0 评论 -
华为招聘机试整理11:实现字符串间隔输出
华为招聘机试整理11:实现字符串间隔输出题目:实现字符串间隔输出将字符串”Computer Secience”赋给一个字符数组,然后从第一个字母开始间隔的输出该串,用指针完成。题目分析:简单考察指针的操作这里需要注意一个,我们利用设置一个标记标量flag来实现间隔输出。尤其是针对奇数项或者偶数项输出的这种题目。==============================原创 2014-07-11 11:02:17 · 1918 阅读 · 0 评论 -
华为招聘机试整理10:实现字符串中子字符串的替换
华为招聘机试整理10:实现字符串中子字符串的替换题目:子字符串的替换编写一个字符串替换函数,如函数名为 StrReplace(char* strSrc, char* strFind, char* strReplace),strSrc为原字符串,strFind是待替换的字符串,strReplace为替换字符串。举个直观的例子吧,如:“ABCDEFGHIJKLMNOPQRSTUVWXY原创 2014-07-11 10:17:59 · 1355 阅读 · 0 评论 -
华为招聘机试整理8:操作系统任务调度问题
华为招聘机试整理8:操作系统任务调度问题题目:操作系统任务调度问题操作系统任务分为系统任务和用户任务两种。其中,系统任务的优先级 = 50且 例如:task[] = {0, 30, 155, 1, 80, 300, 170, 40, 99}system_task[] = {0, 3, 1, 7, -1}user_task[] = {4, 8, 2, 6, -1}函数原创 2014-07-11 01:56:49 · 1655 阅读 · 0 评论 -
华为招聘机试整理14:数组奇数偶数排序
华为招聘机试整理14:数组奇数偶数排序题目:数组奇数偶数排序对一个数组,将数组中偶数从大到小排序,奇数从小到大排序,奇数和偶数交叉着放且输出数组第一位放奇数 若奇数和偶数不等长,则把剩下的直接放到数组中。题目分析:本题主要就是考查整型数组之间的排序算法思路:①先循环判断每个数的奇数偶数,分别放入奇数数组中,偶数数组中②用sort将奇数数组和偶数数组排序③比较奇数原创 2014-07-11 17:12:22 · 2012 阅读 · 0 评论 -
华为招聘机试整理13:算分数的问题
华为招聘机试整理13:算分数的问题题目:算分数的问题算分数的问题,去掉一个最高分一个最低分,之后求平均题目分析:直接利用#include中的sort排序,之后直接去除第一个和最后一个就可以了,最后精度考虑吧,我们这里用#include中的setiosflags(ios::fixed) ===========================================原创 2014-07-11 11:40:56 · 1945 阅读 · 0 评论 -
华为招聘机试整理9:输入一个字符串,用指针求出字符串的长度
华为招聘机试整理9:输入一个字符串,用指针求出字符串的长度题目:输入一个字符串,用指针求出字符串的长度题目分析:这个考察比较基础,不做详细解释了。==========================================================================参考代码://输入一个字符串,用指针求出字符串的长度.cpp//2014原创 2014-07-11 09:46:56 · 1595 阅读 · 0 评论 -
华为招聘机试整理15:约瑟夫环
华为招聘机试整理15:约瑟夫环题目:约瑟夫环约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。题目分析:这道题主要是想考察链表的知识。算法思路一:用环形链表模拟圆圈我们这里采用模板库中的s原创 2014-07-11 20:09:40 · 1551 阅读 · 0 评论 -
HWOJ 计算字符的个数
HWOJ 计算字符的个数题目:计算字符的个数题目分析:这道一就是用哈希表来做。关于字符个数的题目了。学习笔记:这里补充c/c++中各种输入模式的用法:cin1)输入一个数字2)接受一个字符串,遇到空格、TAB、回车都结束cin.get()1)cin.get(ch)用来接收字符char ch; cin.get(ch);2)cin原创 2014-07-07 00:48:17 · 986 阅读 · 1 评论 -
HWOJ 完全数计算
HWOJ 完全数计算题目:完全数计算样例输入:1000样例输出:3题目分析:算法思路:①先用双循环找出这个数范围内每个数的的所有约数i%j == 0②再去相加与本身数去比较,如果相等那么Number加1.③这里需要注意每次sum必须从新赋值为0========================================原创 2014-07-04 20:45:32 · 957 阅读 · 0 评论 -
HWOJ 判断两个单词是否为变位词
HWOJ 判断两个单词是否为变位词题目:判断两个单词是否为变位词如果两个单词中出现的字母相同,而且每个字母出现的次数也相同,那么说明这两个单词互为变位词(Anagram)测试样例:silent listen evil live题目分析:算法思路:①先创建哈希表,统计字符串1中出现的次数;②将哈希表扫描第二个字符串时,扫描到每个字符时候,为哈希表减去1,③如果原创 2014-07-04 20:41:11 · 2336 阅读 · 0 评论 -
HWOJ 删除字符串中重复出现的字符
HWOJ 删除字符串中重复出现的字符题目:删除字符串中重复出现的字符样例:输入:google输出:gole题目分析:算法思路:哈希表过滤法。①初始化一个哈希表,用以存储字符(key)及字符出现的次数;②遍历哈希表,进行统计计数;③输出统计次数为1及统计次数多余1的(输出1次)。如果多于1次则只显示一次,时间复杂度:O(n)。这里考虑多定义加一个新数组来存原创 2014-07-04 20:13:19 · 761 阅读 · 0 评论 -
HWOJ 在一个字符中删除第二个字符出现过的所有字符
HWOJ 在一个字符中删除第二个字符出现过的所有字符题目:在第一个字符中删除第二个字符出现过的所有字符实例:第一个字符:We are students.第二个字符:aeiou. 结果:W r stdnts.题目分析:①本题需要完成工作就是查找和删除②查找字符我们可以使用先去遍历第一个字符,之后再去第二个字符中去查到到底存在不存在,这样复杂度为O(mn)所以,创建原创 2014-07-04 12:08:10 · 730 阅读 · 0 评论 -
HWOJ 在一个字符串中找到第一个只出现一次字符
HWOJ 在一个字符串中找到第一个只出现一次字符题目:在一个字符串中找到第一个只出现一次字符测试数据1:bbccdda 样例输出:a测试数据2:aabbcc 样例输出:.测试数据3: 0 样例输出:1题目分析:①最直观的思路:从头开始扫描这个字符串的每一个字符,当访问到某个字符时拿这个字符和后面的每一个字符进行比较,如果后面没有发现重复的字符,则原创 2014-07-04 12:08:04 · 714 阅读 · 0 评论 -
HWOJ 杨辉三角的变形
HWOJ 杨辉三角的变形题目:题目分析:思路分析:1)直接利用遍历对每一行去查找,这样算法复杂度比较高2)我们多写几行,观察下通过观察我们可以知道1.前两行没有偶数可直接返回-1、2.从第三行开始、奇数行第一个偶数出现的位置为2、3.从第四行开始、偶数行第一个偶数出现的位置最少在3以上才出现======原创 2014-07-04 12:05:47 · 961 阅读 · 0 评论 -
HWOJ 数字2
HWOJ 数字2题目:将一个字符中所有出现的数字前加上符号“*”,其他字符保持不变题目分析:①这道题和前面一道题区别在于,现在只要检测到数字我们就需要在它前面加上符号,所以我们这道题更加简单②相同方法,采用isdigit来检测是否为数字,之后利用c++中string类insert来插入符号②我们还想到一种方法,算法思路:用c语言来做,原理利用两个数组之间的搬移,也就原创 2014-07-04 12:02:32 · 1238 阅读 · 0 评论 -
HWOJ数字
HWOJ数字题目:将一个字符中所有出现的数字前后加上符号“*”,其他字符保持不变样例输入:Jkdi234klowe90a3题目分析:①这道题首先要输入一个字符串,这个字符串没有空格,所以我们可以采用cin②因为我们需要检测是不是数字,我们可以用头文件中的#include中的isdigit来判断③本题还涉及到字符串中字符的插入问题,所以我们这个原创 2014-07-04 02:17:25 · 1063 阅读 · 0 评论 -
HWOJ 计算字符串最后一个单词长度
HWOJ计算字符串最后一个单词长度题目:计算字符串最后一个单词的长度,单词以空格隔开输入样例:hello world输出样例:5题目分析:①由于题目中输入的字符串有空格,所以我们这里不能用scanf输入,我们采用gets(s)②我们要检测最后一个单词的长度,也就是可以说明我们可以从后面往前面循环找出第一个空格位置,之后直接求差值我们就可以知道这个字符串最后一个单原创 2014-07-04 02:15:24 · 2573 阅读 · 1 评论 -
HWOJ 名字的漂亮度
HWOJ 名字的漂亮度题目:给出一个名字,该名字有26个字符串组成,定义这个字符串的“漂亮度”是其所有字母“漂亮度”的总和每个字母都有一个“漂亮度”,范围在1到26之间。没有任何两个字母拥有相同的“漂亮度”。字母忽略大小写。给出多个名字,计算每个名字最大可能的“漂亮度”。题目分析:算法思路:①先创建哈希表,之后找出字符串中出现的字母的次数用isalp原创 2014-07-04 20:42:57 · 1018 阅读 · 0 评论 -
HWOJ 超长正整数相加
HWOJ 超长正整数相加题目:超长正整数相加题目分析:①由于超长正整数相加,所以我们想到用字符串型来处理string addend加数 string augend被加数②由于我们需要考虑是不是用进位,基本思路就是首先我们找出最短字符,之后从最后一个字符开始,慢慢往前相加,加到最短字符的第一个字符,我们判断下进位标示,之后长字符的其他部原创 2014-07-07 00:42:38 · 2339 阅读 · 0 评论 -
HWOJ 计算字符串最后一个单词长度
HWOJ 计算字符串最后一个单词长度题目:计算字符串最后一个单词的长度,单词以空格隔开输入样例:hello world输出样例:5题目分析:①由于题目中输入的字符串有空格,所以我们这里不能用scanf输入,我们采用gets(s)②我们要检测最后一个单词的长度,也就是可以说明我们可以从后面往前面循环找出第一个空格位置,之后直接求差值我们就可以知道这个字符串最后一原创 2014-07-07 00:45:56 · 1478 阅读 · 0 评论 -
HWOJ 图片整理
HWOJ 图片整理题目:图片整理题目分析:这道题其实很简单就是一个比较和交换,将当前字符和后一位字符去比较。字符串string中ASCII可以直接比较如果s[i] < s[j]说明前者ASCII码比较小=======================================================================原创 2014-07-07 00:43:44 · 980 阅读 · 0 评论 -
HWOJ 简单错误记录
HWOJ 简单错误记录题目:简单错误记录题目描述:开发一个简单的错误记录功能模块,能够记录出错的代码所在的文件名称和行号。处理:1、记录最多8条错误记录,循环记录,对相同的错误记录(净文件名称和行号完全匹配)只记录一条错误,错误计数增加;2、超过16个字符的文件名称,只记录文件的最后有效16个字符;3、输入的文件可能带路径,记录文件名称不能带路径原创 2014-07-07 00:38:37 · 2540 阅读 · 0 评论 -
HWOJ 查找输入整数二进制中1的个数
HWOJ 查找输入整数二进制中1的个数题目:查找输入整数二进制中1的个数题目分析:思路一:利用位运算来做,所以我们不需要把输入的十进制转化为2进制;直接先将n 与 1进行位运算,这样检测最右边的数是不是为1,之后将n右移动一位,直到n不为0思路二:由于思路一有两个弊端,①是时间比较长 ②如果为输入为负数的时候就不正确,所以我们尽量不右边移动输原创 2014-07-07 00:44:32 · 867 阅读 · 0 评论 -
HWOJ 查找组成一个偶数最接近的两个素数
HWOJ 查找组成一个偶数最接近的两个素数题目:查找组成一个偶数最接近的两个素数任意一个偶数(大于2)都可以由2个素数组成,组成偶数的2个素数有很多种情况,本题目要求输出组成指定偶数的两个素数差值最小的素数对实例输入:20实例输出:7 13题目分析:算法思路:①首先非法输入,如果输入不为偶数,则直接返回0②找出该范围内的为素数的数,这里注意判断素数我们初始化,和原创 2014-07-04 20:44:36 · 1920 阅读 · 3 评论 -
HWOJ 实现一个听高级的字符匹配算法
HWOJ 实现一个听高级的字符匹配算法题目:实现一个挺高级的字符匹配的算法测试样例:题目分析:算法思路:①创建一个长度为256的数组,哈希表,遍历较长的字符之后将对应出现的字符,将哈希表的键值写成1②重新遍历第二个字符串,我们看看对应哈希表的键值,如果为0,说明字符串1有些字符在字符串2中找不到,则说明匹配不成功否则成功。学习笔记:这原创 2014-07-04 20:37:49 · 926 阅读 · 0 评论 -
HWOJ 合唱队
HWOJ 合唱队题目:合唱队样例输入:8186 186 150 200 160 130 197 200样例输出:4题目分析:算法思路:①动态规划求出以每个人结尾的左边和右边的最大队列长度②枚举每个人为“中心点”,计算出满足题目要求的队列长度,记录最大值③用left[i]表示从左边起到第i个人结束的最长上升队列的人数,那么得到最原创 2014-07-07 00:41:44 · 944 阅读 · 1 评论 -
HWOJ 删除字符串中出现次数最少的字符
HWOJ 删除字符串中出现次数最少的字符题目:题目分析:①首先哈希表遍历每一个字符,找出出现次数最小的字符,最开始初始化min可以直接设为第一个hashTable[pHashKey]②再去遍历每一个字符,如果次数比它大,则直接输出,否则等于或者小于都将哈希表对应项设为0③这里需要注意原型写成char DeletingChar我们就要考虑怎么初始化原创 2014-07-04 12:05:55 · 791 阅读 · 0 评论 -
华为招聘机试整理16:约瑟夫环应用
华为招聘机试整理16:约瑟夫环应用题目:约瑟夫环应用输入一个由随机数组成的数列(数列中每个数均是大于0的整数,长度已知),和初始计数值m。从数列首位置开始计数,计数到m后,将数列该位置数值替换计数值m,并将数列该位置数值出列,然后从下一位置从新开始计数,直到数列所有数值出列为止。如果计数到达数列尾段,则返回数列首位置继续计数。请编程实现上述计数过程,同时输出数值出列的顺序比如:原创 2014-07-12 10:38:25 · 1530 阅读 · 0 评论