-
2021-10-17 23:16:26
作者:翟天保Steven
版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处题目描述:
计算一个数字的立方根,不使用库函数。
保留一位小数。
输入描述:
待求解参数,为double类型(一个实数)
输出描述:
输入参数的立方根。保留一位小数。
示例:
输入:
216
输出:
6.0
解题思路:
这是道数学题,求解数值的立方根,就是求解fx=x^3-C的零根,C就是数值,x就是我们要解的立方根。有两种方法,一种方法就是暴力遍历,将x从某个初始值开始,每0.05进行一次立方计算,判断与C的差值是否大于0,若某个数值所得差值从负数变为正数,该数值近似为解;另一种方法就是牛顿迭代法,计算xn+1=xn+(C/xn^2-xn)/3,若某个xn+1的立方同C差值的绝对值小于某个精度,则认为找到该值,至于为什么用这个式子,可以百度牛顿迭代法,百度百科讲的很清楚。
测试代码:
#include <iostream> #include <math.h> #include <iomanip> using namespace std; double func(double t,double num) { if(abs(t*t*t-num)<0.00001) return t; else return func((num/t/t+2*t)/3,num); } int main() { double num; while(cin>>num) { cout<<fixed<<setprecision(1)<<func(1.,num)<<endl; } return 0; }
更多相关内容 -
华为机试高频题目(Java实现)
2022-04-02 22:56:39华为机试中出现的高频算法题目的一个汇总。 OJ模式下的输入输出。 代码是Java实现。 首先对于华为机试的OJ输入输出需要熟练,可以参考: ACM(OJ)模式下对于各种输入输出情况的总结(JAVA) 华为机试高频题目: ...华为机试中出现的高频算法题目的一个汇总。
说明:
- OJ模式下的输入输出。
- 代码是Java实现。
首先对于华为机试的OJ输入输出需要熟练,可以参考:
华为机试高频题目:
1. 字符串
类别 题目 知识点 题目分值 / 难度 字符串 华为机试:TLV解析Ⅰ 字符串分隔、拼接、搜索 100/中等 字符串 华为机试:VLAN资源池 字符串分隔、拼接、与数组的转化、List排序 100/中等 字符串 华为机试:字符串统计(全量和占用字符集) 字符串分隔、拼接、哈希表 100/简单 字符串 华为机试:无重复字符的元素长度乘积的最大值 字符串分隔、长度 100/简单 字符串 华为机试:非严格递增连续数字序列 字符串分隔、非严格递增 100/简单 字符串 华为机试:拼接URL 字符串分隔、替换 100/简单 字符串 华为机试:矩阵最大值 字符串、二进制 100/中等 字符串 华为机试:最远足迹 字符串、数组 100/中等 2. 栈和队列
类别 题目 知识点 题目分值 / 难度 栈和队列 华为机试:滑动窗口最大值 队列、双指针 100/简单 栈和队列 华为机试:最大嵌套括号深度 栈、字符串 100/中等 栈和队列 华为机试:字符串消除 栈、字符串 100/简单 栈和队列 华为机试:DNA序列 双指针 100/中等 3. 数组
类别 题目 知识点 题目分值 / 难度 数组 华为机试:最多团队 数组、二分法 100/中等 数组 华为机试:猴子吃桃 数组、二分法 200/中等 数组 华为机试:停车场车辆统计 数组、模拟 100/简单 数组 华为机试:k 对元素最小值 优先队列 100/中等 数组 华为机试:绘图机器 数组、模拟 100/简单 数组 华为机试:整数最小和 字符数组、模拟 100/中等 数组 华为机试:最大社交距离 TreeSet、模拟+设计 100/中等 数组 华为机试:玩牌高手 数组+模拟 100/中等 数组 华为机试:最大差 数组+字符串+模拟 200/中等 数组排序 华为机试:数组求和 ArrayList、去重、排序 100/中等 数组排序 华为机试:身高体重排序 多关键字排序、二维数组排序 100/中等 数组排序 华为机试:磁盘容量排序 多关键字排序、二维数组排序 100/中等 数组排序 华为机试:数组去重和排序 HashMap排序、lambda表达式排序 100/中等 数组排序 华为机试:最小数字 字符串数组排序 100/中等 4. 动态规划
类别 题目 知识点 题目分值 / 难度 动态规划 华为机试:高效的任务规划 动态规划 200/中等 动态规划 华为机试:机智的外卖员 动态规划 100/中等 动态规划 华为机试:叠积木 动态规划、自定义排序 100/中等 5. 二叉树
类别 题目 知识点 题目分值 / 难度 二叉树 华为机试:数组二叉树 dfs+数组二叉树 200/中等 二叉树 华为机试:完全二叉树非叶子部分后序遍历 数组二叉树、二叉树数据结构 200/中等 6. 链表
类别 题目 知识点 题目分值 / 难度 链表 华为机试:输出单向链表中倒数第k个结点 链表操作 100/中等 7. 算法数学类
类别 题目 知识点 题目分值 / 难度 回溯 华为机试:全排列 回溯+数学 100/中等 BFS 华为机试:服务器广播 连通+BFS 200/中等 回溯 华为机试:最大岛屿体积 回溯+dfs 100/中等 众数中位数 华为机试:查找众数及中位数 hashMap排序 100/中等 质数 华为机试:数字涂色 模拟 100/中等 8. 2022算法实战
时间 题目 知识点 题目分值 / 难度 2022.3.30 芯片资源限制 模拟 100/中等 2022.3.30 按图找最近的路 回溯、dfs 200/中等 2022.3.30 寻找完全相同的子树 二叉树、dfs 300/中等 时间 题目 知识点 题目分值 / 难度 2022.4.6 查找舆情热词 多关键字排序、TreeMap 100/中等 2022.4.6 服务启动 BFS,HashSet 200/中等 2022.4.6 天然货仓 单调栈 300/中等 时间 题目 知识点 题目分值 / 难度 2022.4.13 硬件资源分配 多关键字排序、HashMap/优先队列 100/中等 2022.4.13 工单调度策略 贪心、优先队列 200/中等 2022.4.13 分发糖果 动态规划、01背包 300/中等 时间 题目 知识点 题目分值 / 难度 2022.4.20 新员工考试 回溯、dfs 100/中等 2022.4.20 按照路径替换二叉树 二叉树、递归 200/中等 2022.4.20 [找最佳执行路径] dfs,HashMap 300/中等 时间 题目 知识点 题目分值 / 难度 2022.4.27 购买水果最便宜的方案 贪心、排序 100/中等 2022.4.27 公式修正 模拟 200/中等 2022.4.27 项目规划 dfs,01背包 300/中等 说明:上面的练习的题目是华为od机试,下面2022算法实战是华为暑期实习机试。
-
【强烈推荐收藏】坚持3个月爆肝华为机试108题C++全解(适合新手入门,就业必刷套题)
2021-10-18 09:59:45爆肝3个月为大家带来华为机试108题全解,强烈推荐学生党、就业党收藏作者:翟天保Steven
版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处前言
金九银十,金三银四。当前正处于校招、社招的火热期,之前就想为正在筹备就业的同学们准备刷题宝典,如牛客网的华为机试、剑指offer、leetcode、大厂名企真题集合等,但是因为最近工作项目压力较大,所以只能通过空闲时间完成一套题目的全套解析,也就是偏向基础的华为机试。
华为机试虽然是一套相对简单的算法必备刷题集,里面也涉及了不少有些难度的考点,比如动态规划、树、图、表、深度优先遍历DFS、系统类设计等等,所以这套题目无论是针对新手上手,还是让有经验的大佬复习回顾,都是很不错的。
如果你能沉下心来,认真将这套题刷完,那么恭喜你,你已经初步具备了一个算法工程师的基础能力,即对STL容器、字符串、算法知识、数学逻辑等有了一定程度的了解,之后可以考虑进行进阶级别的刷题练习,比如华为、BAT、字节等大厂的真题训练,又或者进行一些模拟笔试来提高自己的限时手搓代码能力。
总的来说,还是希望本文能真切地帮助到一些同学,如果你能有所收获,请给我一个三连哦~
华为机试入口:华为机试题库_在线编程+题解_牛客题霸_牛客网
题目全解:
接下来就是题目解析通道,也是华为机试专栏的内容。
-
字符串最后一个单词的长度:字符串;
-
计算某字母出现次数:字符串、ASCII码、哈希;
-
明明的随机数:STL、map、数组、哈希;
-
字符串分隔:字符串;
-
进制转换:字符串、位运算、进制操作;
-
质数因子:数学、排序;
-
取近似值:数学;
-
合并表记录:STL、哈希;
-
提取不重复的整数:数组、位运算、哈希;
-
字符个数统计:字符串、哈希;
-
数字颠倒:字符串;
-
字符串反转:字符串;
-
句子逆序:数组、字符串;
-
字符串排序:字符串、排序;
-
求int型正整数在内存中存储时1的个数:位运算;
-
购物单:动态规划、数组;
-
坐标移动:字符串、正则表达式;
-
识别有效的IP地址和掩码并进行分类统计:字符串、查找;
-
简单错误记录:字符串、STL;
-
密码验证合格程序:字符串、数组;
-
简单密码:字符串;
-
汽水瓶:数学、模拟;
-
删除字符串中出现次数最少的字符:字符串、STL、排序;
-
合唱队:动态规划、队列;
-
数据分类处理:排序、STL;
-
字符串排序:字符串、排序;
-
查找兄弟单词:查找、STL;
-
素数伴侣:匈牙利算法;
-
字符串加解密:字符串;
-
字符串合并处理:字符串、排序、位运算、串流;
-
单词倒排:字符串、排序、STL;
-
密码截取:字符串、STL、回文;
-
整数与IP地址间的转换:字符串、位运算、串流;
-
图片整理:字符串、STL;
-
蛇形矩阵:数学、数组;
-
字符串加密:字符串、密码学;
-
统计每个月兔子的总数:查找、排序、斐波那契数列、递归;
-
求小球落地5次后所经历的路程和第5次反弹的高度:模拟、思维、数学;
-
判断两个IP是否属于同一子网:字符串、模拟、位运算、串流、STL;
-
统计字符:字符串;
-
称砝码:深度优先遍历DFS、字符串、STL;
-
学英语:字符串、字典、STL、思维;
-
迷宫问题:回溯法、深度优先遍历DFS、STL;
-
Sudoku数独:思维、数学、搜索、深度优先遍历DFS;
-
名字的漂亮度:字符串、排序、STL;
-
截取字符串:字符串;
-
空
-
从单向链表中删除指定值的节点:链表;
-
多线程:多线程、锁;
-
四则运算:字符串、数学、栈;
-
输出单向链表中倒数第k个结点:链表、查找;
-
计算字符串的距离:动态规划、字符串、图;
-
杨辉三角的变形:数学、字符串;
-
表达式求值:字符串、数学、栈;
-
挑7:数学、穷举;
-
完全数计算:数学、提速、数组;
-
高精度整数加法:字符串;
-
输入n个整数,输出其中最小的k个:数组、需求分析、排序;
-
找出字符串中第一个只出现一次的字符:字符串、STL;
-
查找组成一个偶数最接近的两个素数:查找、数学、穷举;
-
放苹果:递归、动态规划;
-
查找输入整数二进制中1的个数:位运算;
-
DNA序列:字符串;
-
MP3光标位置:数组、思维;
-
查找两个字符串a,b中的最长公共子串:字符串;
-
配置文件恢复:字符串、字典;
-
24点游戏算法:深度优先遍历DFS、搜索;
-
成绩排序:排序、STL;
-
矩阵乘法:数组;
-
矩阵乘法计算量估算:字符串、STL;
-
字符串通配符:字符串、动态规划、递归、表;
-
百钱买百鸡问题:查找、数学;
-
计算日期到天数转换:字符串、思维、字典;
-
参数解析:字符串;
-
公共子串计算:动态规划、STL;
-
尼科彻斯定理:数学;
-
火车进站:栈、递归;
-
空
-
空
-
整型数组合并:排序、数组;
-
字符串字符匹配:字符串;
-
将真分数分解为埃及分数:贪心算法、数学、搜索;
-
二维数组操作:思维、数组;
-
统计大写字母个数:字符串;
-
最长回文子串:字符串、穷举、回文;
-
求最大连续bit数:位运算;
-
密码强度等级:字符串;
-
扑克牌大小:字符串、字典、排序、链表、队列、栈;
-
24点运算:字符串、模拟、穷举、STL;
-
合法IP:字符串、链表、队列、栈;
-
走方格的方案数:字符串、递归;
-
在字符串中找出连续最长的数字串:字符串、STL;
-
数组分组:字符串、数组、递归;
-
记票统计:查找、STL;
-
人民币转换:字符串、思维、STL;
-
表示数字:字符串、STL;
-
记负均正:数组、思维;
-
自动售货系统:模拟、面向对象、字符串;
-
自守数:数学、查找、提速;
-
等差数列:数学;
-
对数组元素按照升序或降序进行排序:排序;
-
字符统计:字符串、排序、STL;
-
Redraiment的走法:排序、动态规划;
-
空
-
记负均正II:数组、思维;
-
字符逆序:字符串;
-
求解立方根:数学、二分、牛顿迭代法;
-
求最小公倍数:数学、递归;
总结
好啦,总的就是这些内容了,特此分享给大家,如果内容帮助到你了,请给我一个三连哦~
-
-
华为机试HJ88:扑克牌大小
2021-10-08 10:15:55C++实现——扑克牌大小作者:翟天保Steven
版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处题目描述:
扑克牌游戏大家应该都比较熟悉了,一副牌由54张组成,含3~A、2各4张,小王1张,大王1张。牌面从小到大用如下字符和字符串表示(其中,小写joker表示小王,大写JOKER表示大王):
3 4 5 6 7 8 9 10 J Q K A 2 joker JOKER
输入两手牌,两手牌之间用"-"连接,每手牌的每张牌以空格分隔,"-"两边没有空格,如:4 4 4 4-joker JOKER。
请比较两手牌大小,输出较大的牌,如果不存在比较关系则输出ERROR。
基本规则:
(1)输入每手牌可能是个子、对子、顺子(连续5张)、三个、炸弹(四个)和对王中的一种,不存在其他情况,由输入保证两手牌都是合法的,顺子已经从小到大排列;
(2)除了炸弹和对王可以和所有牌比较之外,其他类型的牌只能跟相同类型的存在比较关系(如,对子跟对子比较,三个跟三个比较),不考虑拆牌情况(如:将对子拆分成个子);
(3)大小规则跟大家平时了解的常见规则相同,个子、对子、三个比较牌面大小;顺子比较最小牌大小;炸弹大于前面所有的牌,炸弹之间比较牌面大小;对王是最大的牌;(4)输入的两手牌不会出现相等的情况。
输入描述:
输入两手牌,两手牌之间用"-"连接,每手牌的每张牌以空格分隔,"-"两边没有空格,如 4 4 4 4-joker JOKER。
输出描述:
输出两手牌中较大的那手,不含连接符,扑克牌顺序不变,仍以空格隔开;如果不存在比较关系则输出ERROR。
示例:
输入:
4 4 4 4-joker JOKER
输出:
joker JOKER
解题思路:
这题是字符串分析题。首先读取字符串,用s1和s2分别表示两手牌,用Compare函数比较输出结果;先判断对王的情况,再用getchild函数拆解手牌,获得手牌数;之后,用isBomb函数分析炸弹情况,有炸弹则为大,同炸弹则利用字典card判断大小;若没有炸弹,则分析手牌数是否一致,不一致则无法比较,一致则用card判断大小。完毕。
测试代码:
#include <iostream> #include <string> #include <vector> using namespace std; // 卡牌集合 vector<string> card={ "3","4","5","6","7","8","9","10","J","Q","K","A","2","joker","JOKER" }; // 比较大小 bool cmd(string s1,string s2) { int m,n; for(int i=0;i<card.size();++i) { if(s1==card[i]) m=i; if(s2==card[i]) n=i; } if(m>n) return true; else return false; } // 获取卡牌 vector<string> getchild(string s) { vector<string> result; string ss; for(int i=0;i<s.size();++i) { if(s[i]==' ') { result.push_back(ss); ss.clear(); continue; } ss+=s[i]; } result.push_back(ss); return result; } // 判断卡牌是否一致 bool isSame(vector<string> child) { for(int i=1;i<child.size();++i) { if(child[i]!=child[0]) { return false; } } return true; } // 判断是否为炸弹 bool isBomb(string s) { vector<string> child=getchild(s); if(child.size()==4&&isSame(child)) return true; return false; } // 判断大小 string Compare(string s1,string s2) { // 判断是否有对王 if(s1=="joker JOKER") return s1; else if(s2=="joker JOKER") return s2; vector<string> c1=getchild(s1); vector<string> c2=getchild(s2); // 判断是否有炸弹 if(isBomb(s1)&&(!isBomb(s2))) return s1; else if(isBomb(s2)&&(!isBomb(s1))) return s2; else if(isBomb(s1)&&isBomb(s2)){ if(cmd(c1[0],c2[0])) return s1; else return s2; } // 若都不是对王或者炸弹,再判断大小 else{ if(c1.size()!=c2.size()) return "ERROR"; if(cmd(c1[0],c2[0])) return s1; else return s2; } } int main() { string str; while(getline(cin,str)) { string s1,s2; bool first=true; for(int i=0;i<str.size();++i) { if(str[i]=='-') { first=false; continue; } if(first) s1+=str[i]; else s2+=str[i]; } cout<<Compare(s1,s2)<<endl; } return 0; }
-
华为机试HJ43:迷宫问题
2021-08-19 16:16:50C++实现——迷宫问题 -
华为机试HJ54:表达式求值
2021-09-02 10:32:49C++实现——表达式求值 -
华为机试HJ81:字符串字符匹配
2021-09-21 17:04:59C++实现——字符串字符匹配 -
说说华为机试注意点以及三道题的解题思路
2021-04-09 05:50:11最近有机会尝试做了一下华为机试题,感觉整个过程还是挺有意思的,分享一下经历。 前面说一下体验和注意点,后面附上题目和解题思路,本文使用python解题 一、体验和一些注意点 1、总体的感觉: 难度比预想的小挺多... -
华为机试HJ33:整数与IP地址间的转换
2021-08-05 15:31:37C++实现——整数与IP地址间的转换 -
华为机试HJ71:字符串通配符
2021-09-15 10:45:25C++实现——字符串通配符 -
华为机试HJ26:字符串排序
2021-07-26 13:42:08C++实现——字符串排序 -
华为机试HJ40:统计字符
2021-08-14 07:16:02C++实现——统计字符 -
华为机试HJ14:字符串排序
2021-07-21 10:33:35C++实现——字符串排序 -
华为机试HJ83:二维数组操作
2021-09-24 16:41:21C++实现——二维数组操作 -
华为机试HJ16:购物单
2021-07-21 12:49:10C++实现——购物单问题 -
【华为机试真题 Python实现】2022年4、5月高频机试题
2022-06-02 22:18:31最近准备华为OD社招的同学还比较多,增加了100多的订阅,大多是没有编程经验的同学,上来一顿的搜题背题,没有去理解题目思考结题思路,导致机考时题目稍微一变化就不知道怎么做了,不过OD的机试的重复也是真的高,... -
华为机试HJ11:数字颠倒
2021-07-20 16:32:58C++实现——数字颠倒 -
华为机试HJ24:合唱队
2021-07-26 13:21:24C++实现——合唱队问题 -
华为机试HJ30:字符串合并处理
2021-07-27 13:00:31C++实现——字符串合并处理 -
2022华为机试社招OD高频考试真题【5, 6月份Q1, Q2考试新编程题目】
2022-05-30 09:42:512022华为社招OD高频考试真题https://www.online1987.com/shezhao/200fentimu/ 最长广播效应https://www.online1987.com/%e6%9c%80%e9%95%bf%e5%b9%bf%e6%92%ad%e6%95%88%e5%ba%94/ 某通信网络中有N个网络结点,... -
华为机试HJ29: 字符串加解密
2021-07-27 11:00:12C++实现——字符串加解密 -
华为机试:TLV解析Ⅰ
2022-04-01 17:19:57【编程题目 | 100分】TLV解析Ⅰ [ 100 / 中等 ] 本题可使用本地IDE编码,不能使用本地已有代码。... 题目描述: TLV 编码是按 [ Tag Length Value ] 格式进行编码的,一段码流中的信元用Tag标识, Tag在码流中 唯一不... -
华为机试HJ18:识别有效的IP地址和掩码并进行分类统计
2021-07-21 15:35:44C++实现——识别有效的IP地址和掩码并进行分类统计 -
华为机试HJ93:数组分组
2021-10-09 15:58:55C++实现——数组分组 -
华为机试HJ86:求最大连续bit数
2021-09-26 15:16:01C++实现——求最大连续bit数 -
华为机试HJ35:蛇形矩阵
2021-08-10 11:19:29C++实现——蛇形矩阵 -
华为机试 & 牛客网
2021-02-24 20:52:18华为机试 & 牛客网 今天在准备华为机试,时间蛮紧的,就在牛客网刷了点题目,好久没练算法了,从网上查了下代码,发现很多版本的解题方法,因为我主要学的是C语言,就只看了C++的解法,下面汇总一下我觉得比较... -
华为机试HJ92:在字符串中找出连续最长的数字串
2021-10-09 15:21:27C++实现——在字符串中找出连续最长的数字串 -
华为机试HJ53:杨辉三角的变形
2021-08-29 22:54:54C++实现——杨辉三角的变形 -
华为机试HJ100:等差数列
2021-10-15 15:09:00C++实现——等差数列