华为机试
Am最温柔
每天都有觉得自己太菜的焦虑,解决方法也很简单,好好学习就行了,今天也要加油鸭~
展开
-
华为机试 图片整理
题目描述Lily上课时使用字母数字图片教小朋友们学习英语单词,每次都需要把这些图片按照大小(ASCII码值从小到大)排列收好。请大家给Lily帮忙,通过C语言解决。本题含有多组样例输入。利用Sort 函数对string进行排序即可,我竟然忘记Sort应该包含algorithm了#include<string>#include<iostream>#include<algorithm>using namespace std;int main(){ st原创 2021-03-02 00:19:40 · 156 阅读 · 0 评论 -
华为机试 字符个数统计
题目描述编写一个函数,计算字符串中含有的不同字符的个数。字符在ACSII码范围内(0~127),换行表示结束符,不算在字符里。不在范围内的不作统计。多个相同的字符只计算一次例如,对于字符串abaca而言,有a、b、c三种不同的字符,因此输出3。解题思路:利用set就ok#include<set>#include<iostream>using namespace std;int main(){ string str; cin>>str;原创 2021-03-02 00:14:45 · 108 阅读 · 0 评论 -
华为机试 合并表记录
题目描述数据表记录包含表索引和数值(int范围的正整数),请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出。解题思路:利用哈希表错误点:对以下这种语法不熟悉,Begin 和end后面有括号 而first 和 second后面没有for(auto it=m.begin();it!=m.end();it++){cout<<it->first<<’ '<<it->second<<endl;}#i原创 2021-03-02 00:09:32 · 150 阅读 · 0 评论 -
华为机试 质数因子
题目描述功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如180的质因子为2 2 3 3 5 )最后一个数后面也要有空格解题思路:求质因子连乘积,从2开始,将被除数的的因子除尽,那么得到的就是质因子。错误点:if(n>1) cout<<n<<’ ';这一行没有写,因为随着n的减小,外层循环逐渐满足不了,最后一个因子需要这种方式打出来(虽然我也没搞懂为啥)如果把循环终止条件改为//for(int i=2;i<=n;i++){,会超原创 2021-03-01 23:58:38 · 229 阅读 · 0 评论 -
华为机试 进制转换
题目描述写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。解题思路:遍历进行处理#include<iostream>#include<cmath>using namespace std;int main(){ string str; while(cin>>str){ int n=str.size(); int res = 0; for(int i=2;i<n;i++){原创 2021-03-01 23:34:13 · 139 阅读 · 0 评论 -
华为机试 走方格的方案数
题目描述请计算n*m的棋盘格子(n为横向的格子数,m为竖向的格子数)沿着各自边缘线从左上角走到右下角,总共有多少种走法,要求不能走回头路,即:只能往右和往下走,不能往左和往上走。本题含有多组样例输入。解题思路:动态规划错误点:这个n和m的初始化写反了, vector< vector > dp(m+1,vector(n+1,0)); 导致当输入值不是正方形时会产生访问越界#include<iostream>#include<vector>using na原创 2021-03-01 19:49:22 · 406 阅读 · 0 评论 -
华为机试 密码强度等级
密码按如下规则进行计分,并根据不同的得分为密码进行安全等级划分。一、密码长度:5 分: 小于等于4 个字符10 分: 5 到7 字符25 分: 大于等于8 个字符二、字母:0 分: 没有字母10 分: 全都是小(大)写字母20 分: 大小写混合字母三、数字:0 分: 没有数字10 分: 1 个数字20 分: 大于1 个数字四、符号:0 分: 没有符号10 分: 1 个符号25 分: 大于1 个符号五、奖励:2 分: 字母和数字3 分: 字母、数字和符号5 分: 大小写原创 2021-03-01 17:05:11 · 535 阅读 · 3 评论 -
华为机试 参数解析
题目描述在命令行输入如下命令:xcopy /s c:\ d:\,各个参数如下:参数1:命令字xcopy参数2:字符串/s参数3:字符串c:参数4: 字符串d:请编写一个参数解析程序,实现将命令行各个参数解析出来。解析规则:1.参数分隔符为空格2.对于用“”包含起来的参数,如果中间有空格,不能解析为多个参数。比如在命令行输入xcopy /s “C:\program files” “d:\”时,参数仍然是4个,第3个参数应该是字符串C:\program files,而不是C:\progra原创 2021-03-01 15:32:50 · 318 阅读 · 0 评论 -
华为机试 放苹果
题目描述把m个同样的苹果放在n个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。数据范围:0<=m<=10,1<=n<=10。本题含有多组样例输入。解题思路:动态规划,两种情况:1.如果有空盘子,那么,相当于缩减为m个苹果放在n-1个盘子里的问题2.如果没有空盘子,那么必须保证每个盘子都有一个苹果,那么相当于缩减为m-n个苹果放在n个盘子的问题遇到的问题:1.这个i-j>=0没写出来,如果苹果数量小于原创 2021-03-01 19:49:47 · 373 阅读 · 0 评论 -
华为机试 求最小公倍数
阶梯思路:辗转相除法,求最大公约数,最小公倍数等于两树之积除以最大公约数#include<iostream>using namespace std;int main(){ int a,b; cin>>a>>b; int c = a>b?a:b; int d = a>b?b:a; while(d!=0){ int tmp = d; d = c%d; c = tmp;原创 2021-03-01 19:52:50 · 122 阅读 · 0 评论 -
华为机试 公共子串计算
给定两个只包含小写字母的字符串,计算两个字符串的最大公共子串的长度。注:子串的定义指一个字符串删掉其部分前缀和后缀(也可以不删)后形成的字符串。解题思路:dp,dp[i][j]的含义:字符串1:0-i位置,字符串2:0-j位置 为结束位置的公共子串的最大长度(注意必须是以他们为结尾)。如果dp[i][j]相同,则 dp[i][j] = dp[i-1][j-1]+1;注意事项:1.在字符串前面加上一个空格。要不然我不知道该怎么初始化这个dp数组的初值。str1 = ' '+str1;str2原创 2021-02-28 22:00:58 · 434 阅读 · 0 评论 -
华为机试 计算日期到天数转换
题目描述根据输入的日期,计算是这一年的第几天。。测试用例有多组,注意循环输入解题思路:1.区分闰年:被400整除或者能被4整除但是不能被100整除#include<iostream>#include<vector>using namespace std;int main(){ int year,month,day; while(cin>>year>>month>>day){ int res=0;原创 2021-02-28 20:54:31 · 362 阅读 · 0 评论 -
华为机试 统计大写字母个数
题目描述找出给定字符串中大写字符(即’A’-‘Z’)的个数。注意点:getline(cin,str)读入数据时需要使用这种方式,因为直接cin>>str的话如果遇到空格,cin>>str会认为一次输入已经结束#include<iostream>using namespace std;int main(){ string str; while(getline(cin,str)){ int cnt=0; for(i原创 2021-02-28 20:37:10 · 118 阅读 · 0 评论 -
华为机试 求最大连续bit数
题目描述求一个byte数字对应的二进制数字中1的最大连续数,例如3的二进制为00000011,最大连续2个1本题含有多组样例输入。解题思路:1.先通过与1与运算的结果,将带求数字每一位加入一个数组。2.然后遍历这个数组,通过打擂台的方式,获得最大连续1的个数。错误点:res = max(num,res);我错误的将这句话放到else if(tmp[i]==0)中了,这样导致如果没有一个位为0,那么将无法更新res#include<iostream>#include<vec原创 2021-02-28 20:27:47 · 93 阅读 · 0 评论 -
华为机试 输入一个正整数,计算它在二进制下的1的个数。
输入一个正整数,计算它在二进制下的1的个数。解题思路:剑指offer原题#include<iostream>#include<vector>using namespace std;int main(){ int n; while(cin>>n&&n!=EOF){ int res=0; while(n){ n = n&(n-1); res++;原创 2021-02-28 20:08:06 · 312 阅读 · 0 评论 -
华为机试 统计每个月兔子的总数
有一只兔子,从出生后第3个月起每个月都生一只兔子,小兔子长到第三个月后每个月又生一只兔子,假如兔子都不死,问每个月的兔子总数为多少?本题有多组数据。解题思路:斐波那契数列问题,使用这种方式while(cin>>n&&n!=EOF)读入多行数据#include<iostream>#include<vector>using namespace std;int main(){ int n; while(cin>>n&am原创 2021-02-28 20:02:34 · 82 阅读 · 0 评论 -
华为机试 字符串反转
接受一个只包含小写字母的字符串,然后输出该字符串反转后的字符串。(字符串长度不超过1000)#include<string>#include<iostream>using namespace std;int main(){ string str; cin>>str; int n = str.size(); for(int i=0;i<n/2;i++){ swap(str[i],str[n-i-1]);原创 2021-02-28 19:49:29 · 71 阅读 · 0 评论 -
华为机试 最长回文子串
题目描述给定一个仅包含小写字母的字符串,求它的最长回文子串的长度。所谓回文串,指左右对称的字符串。所谓子串,指一个字符串删掉其部分前缀和后缀(也可以不删)的字符串(注意:记得加上while处理多个测试用例)解题思路:动态规划,dp数组的含义是:dp[i][j]代表从下标为j的位置到下标为i的位置的子串是否为回文数组。递推公式:dp[i][j] = (str[i]==str[j]&&(i-j==1||dp[i-1][j+1]));含义:如果(1)两端的字符相同且两个字符挨着。(原创 2021-02-28 19:40:53 · 556 阅读 · 0 评论 -
华为机试 完全数
完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。例如:28,它有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加,1+2+4+7+14=28。s输入n,请输出n以内(含n)完全数的个数。计算范围, 0 < n <= 500000本题输入含有多组样例。解题思路:1.输入是多个数字,使用cin>>n&&n!=EOF读入数字2.搜索方法,暴原创 2021-02-28 14:10:39 · 218 阅读 · 0 评论 -
华为机试汽水瓶C++
题目描述有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方法如下:先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶子,用3个再换一瓶,喝掉这瓶满的,这时候剩2个空瓶子。然后你让老板先借给你一瓶汽水,喝掉这瓶满的,喝完以后用3个空瓶子换一瓶满的还给老板。如果小张手上有n个空汽水瓶,最多可以换多少瓶汽水喝?经过数学推导:n个空瓶最多换n/2个汽水#include<iostream>using namespa原创 2021-02-28 10:38:24 · 385 阅读 · 0 评论