HUAWEI机试
大河大江
这个作者很懒,什么都没留下…
展开
-
HJ42:学英语
1、解题思路:求解这道题,需要把输入的数字,三位三位拆开来进行一个处理。那么就会发现,求解超过三位数的thousand时,thousand的左起三位“个十百”,与“个十百”的处理方式相似;同理,超过六位数的million左起的六位数和million的六位数处理方式相似,超过九位数的billion左起九位数和billion的九位数处理方式相似。故而,下面的代码看着很长,但string san_san(string str)、string six_san(string str)、string six_san原创 2021-10-26 21:39:57 · 408 阅读 · 0 评论 -
刷题:华为机试 HJ41 利用背包思想
#include <iostream>using namespace std;int main(){ int n; while(cin>>n){ int w[10]={0}; //对应砝码的重量 int num[10]={0}; //对应砝码的数量 for(int i=0;i<n;i++) cin>>w[i]; //输入砝码重量 for(int i=0;i<原创 2021-05-27 22:23:26 · 292 阅读 · 0 评论 -
刷题:华为机试 HJ40 输入一行字符,分别统计出包含英文字母、空格、数字和其它字符的个数
很基础的题。#include <iostream>#include <string>using namespace std;int main(){ string str; while (getline(cin, str)) { int m = 0, n = 0, p = 0, q = 0; for (int i = 0; i < str.length(); i++) {原创 2021-05-10 19:16:22 · 136 阅读 · 0 评论 -
刷题:华为机试 HJ39 判断两个IP是否属于同一子网
这道题需要知道如何判断:IP地址和子网掩码是否合格。判断子网掩码合格:掩码四段八位,前段大于等于后段。判断IP地址合格:四段八位,每段中的取值在0~255。#include <iostream>using namespace std;int main(){ int a, b, c, d; char ch1, ch2, ch3; //掩码四段八位,前段大于等于后段。用这个用来判断子网掩码的合格性。 while (cin >> a >原创 2021-05-10 16:20:33 · 317 阅读 · 0 评论 -
刷题:华为机试 HJ38 求小球落地5次后所经历的路程和第5次反弹的高度
#include <iostream>using namespace std;int main(){ double n; cin >> n; double sum = 0; int m = n; //记录第一次的高度 for (int i = 0; i < 5; i++) { sum += n*2; n /= 2; } cout << sum-m <<原创 2021-05-08 16:07:15 · 136 阅读 · 0 评论 -
刷题:华为机试 HJ37 统计每个月兔子的总数
当月的兔子数=老兔子+新兔子,这里的老兔子就是上个月所有兔子,而新兔子是上上个月的所有兔子(到这个月有了生育能力),即f(n)=f(n-1)+f(n-2)。#include <iostream>using namespace std;int main(){ int n; while (cin >> n) { int last0 = 1; int last1 = 1; int this_month = 1原创 2021-05-08 15:08:38 · 219 阅读 · 0 评论 -
刷题:华为机试 HJ36 字符串加密
如果使用大小写转换函数,显得更整洁、更不容易出错。toupper将小写字母转化为大写字母;tolower将大写字母转化为小写字母。#include <iostream>#include <string>#include <algorithm>#include <vector>using namespace std;int main(){ string key; string str; while (cin >&原创 2021-05-07 23:44:27 · 515 阅读 · 0 评论 -
刷题:华为机试 HJ35 蛇形矩阵
按照最原始的思路求解,可以AC,就是运行时间较长。#include<iostream>using namespace std;int num[100][100];int main(){ int N; while(cin>>N) { num[0][0] = 1; //按照列的顺序进行存储 for (int i = 1; i < N; i++) { //把第一原创 2021-05-04 21:14:16 · 102 阅读 · 0 评论 -
刷题:华为机试 HJ34 图片整理
这道题采用sort函数可以直接AC,但是运行时间比较长。#include <iostream>#include <algorithm>using namespace std;int main(){ string s; while (cin >> s) { sort(s.begin(), s.end()); cout << s << endl; } return 0原创 2021-05-04 12:28:09 · 262 阅读 · 0 评论 -
刷题:华为机试 HJ33 整数与IP地址间的转换
对于这道题,如果对进制转换、移位运算十分熟悉的话,做起来是十分简单的,而且很高效。如果不熟悉相关知识点,做起来费劲一些,下面的代码,对于输入IP地址转换为十进制数,采用的是比较原始的方法,代码显得冗杂;对于十进制数转换为IP地址,则使用的移位运算,代码简洁,而且运行高效。#include <iostream>#include <vector>#include <string>#include <bitset>using namespace std;原创 2021-05-03 15:16:14 · 390 阅读 · 1 评论 -
刷题:华为机试 HJ32 字符串运用-密码截取
#include <iostream>#include <string>#include <vector>#include <algorithm>using namespace std;int main(){ string s; vector<char> s2; while (cin >> s) { //去除字母和数字以外的其他字符 for (int i =原创 2021-04-30 17:07:12 · 259 阅读 · 1 评论 -
刷题:华为机试 HJ30 字符串合并处理
用到的知识:vector向量和sort函数#include <iostream>#include <string>#include <vector>#include <algorithm>using namespace std;int main(){ string s1, s2,s3; while (cin >> s1 >> s2) { s3 = s1 + s2;原创 2021-04-23 19:21:15 · 249 阅读 · 0 评论 -
刷题:华为机试 HJ29 字符串加解密
#include <iostream>using namespace std;int main(){ string s1; while (cin >> s1) { for (int i = 0; i < s1.length(); i++) { if (s1[i] >= 'a' && s1[i] <= 'y') {原创 2021-04-23 11:08:37 · 325 阅读 · 0 评论 -
刷题:华为机试 HJ25 数据分类处理
用到了sort函数进行分类,unique函数进行去重。#include <iostream>#include <vector>#include <algorithm>#include <string>using namespace std;int main(){ int m, n; while (cin >> m) { vector<string> vi1; vec原创 2021-04-20 23:22:38 · 306 阅读 · 0 评论 -
刷题:华为机试 HJ20 密码验证合格程序
#include <iostream>#include <string>using namespace std;int second(string s){ int a = 0, b = 0, c = 0, d = 0; for (int i = 0; i < s.length(); i++) { if (s[i] >= 'A' && s[i] <= 'Z') { a = 1; } else if (s[i] &原创 2021-04-18 20:53:54 · 173 阅读 · 0 评论 -
刷题:华为机试 HJ23 删除字符串中出现次数最少的字符
#include <iostream>#include <string>using namespace std;int main(){ string s; while (getline(cin,s)) { int a[26] = { 0 }; //统计出一串字符中每种字母的数目 for (int i = 0; i < s.length(); i++) { i原创 2021-04-17 16:05:32 · 188 阅读 · 0 评论 -
刷题:华为机试 HJ22 汽水瓶
#include <iostream>using namespace std;int main(){ int n; int num = 0; int yu = 0; int num1 = 0; for(int i=0; i<10; i++) { cin >> n; yu = n; if (n != 0) { while(yu >=原创 2021-04-17 10:23:54 · 184 阅读 · 0 评论 -
刷题:华为机试 HJ50 中缀表达式转换为后缀表达式的四则运算
中缀表达式利于我们手动计算,对于计算机而言,后缀表达式更利于计算机计算。那么,如何将中缀表达式转换为后缀表达式,按照以下步骤即可。①按照运算符的优先级对所有运算符和它的运算数加括号(原本有括号的就不用再加了)②把运算符移动到对应的括号后③去掉括号同样的,将中缀表达式转化为前缀表达式,与上述过程类似:①按照运算符的优先级对所有运算符和它的运算数加括号(原本有括号的就不用再加了)②把运算符移动到对应的括号前③去掉括号...原创 2021-04-14 15:30:26 · 531 阅读 · 0 评论 -
刷题:华为机试 HJ26 字符串排序
#include <iostream>#include <string>using namespace std;int main(){ string s; while (getline(cin, s)) { char temp; for (int i = 0; i < s.length(); i++) { for (int j = 0; j < s.length();原创 2021-04-13 18:22:07 · 243 阅读 · 0 评论 -
刷题:华为机试 HJ21 简单密码破解
直接暴力求解就可以:#include <iostream>using namespace std;int main(){ string s1; cin >> s1; for (int i = 0; i < s1.length(); i++) { if (s1[i] >= 'A' && s1[i] <= 'Y') { s1[i] = s1[i] + 33;原创 2021-04-12 21:18:08 · 382 阅读 · 0 评论 -
刷题:华为机试 HJ17 坐标移动、vector使用
#include <iostream>#include <string>#include <vector>using namespace std;int main(){ string s1; while (cin >> s1) { int x = 0, y = 0; int len = s1.length(); //-----先把有效的字符串输入,分开来存储-----//原创 2021-04-12 17:00:34 · 212 阅读 · 0 评论 -
刷题:华为机试 HJ16 进制转换
#include <iostream>using namespace std;int main(){ int num,m; cin >> num; m = num; int count = 0; while (num>0) { num = num/2; count++; } string s; int end = 0; for (int i = 0; i &l原创 2021-04-10 15:55:56 · 163 阅读 · 0 评论 -
刷题:华为机试 HJ14 二位数组排序
#include <iostream>#include <string.h>using namespace std;int main(){ int n; cin >> n; char s[1001][101]; for (int i = 0; i < n; i++) { cin >> s[i]; } cout << endl; char temp[101原创 2021-04-10 14:22:10 · 138 阅读 · 1 评论 -
刷题:华为机试 HJ13 超简洁
#include<iostream>#include <string>using namespace std;int main() { string str, res; while (cin >> str) { str += " " + res; res = str; } cout << res << endl; return 0;}原创 2021-04-07 15:57:04 · 145 阅读 · 0 评论 -
刷题12:华为机试 HJ12
#include <iostream>using namespace std;int main(){ string s; cin >> s; for (int i = s.length()-1; i >=0; i--) { cout << s[i]; } cout << endl; return 0;}原创 2021-04-06 14:44:17 · 81 阅读 · 0 评论 -
刷题11:华为机试 HJ11 字符串反转
#include <iostream>using namespace std;int main(){ string num; cin >> num; for (int i = num.length()-1; i >=0; i--) { cout << num[i]; } cout << endl; return 0;}原创 2021-04-06 14:41:49 · 118 阅读 · 0 评论 -
刷题10:华为机试 HJ10 哈希
#include <iostream>using namespace std;int main(){ char hash[128] = { false }; string s; cin >> s; int m=0; for (int i = 0; i<s.length(); i++) { m = (int)s[i]; hash[m] = true; } i原创 2021-04-06 14:20:54 · 170 阅读 · 0 评论 -
刷题09:华为机试 HJ9
#include <iostream>using namespace std;int main(){ string num; cin >> num; for (int i = num.length() - 1; i >=0 ; i--) //倒叙,为了删除相同数字中排在前面的数字 for (int j = i-1; j >= 0; j--) { if (num[i] == num[j]原创 2021-04-06 10:13:01 · 119 阅读 · 0 评论 -
刷题08:华为机试 HJ08 用map容器
#include <iostream>#include <map>using namespace std;int main(){ map<int, int> m; int n, key, v; cin >> n; for (int i = 0; i < n; i++) { pair<int, int> data; cin >> data.first; cin >> data.second原创 2021-04-04 18:05:10 · 129 阅读 · 0 评论 -
刷题07:华为机试 HJ7
#include <iostream>using namespace std;int main(){ double num; cin >> num; int a = (int)num; if (num - a >= 0.5) cout << a + 1; else cout << a; return 0;}原创 2021-04-02 17:17:42 · 80 阅读 · 0 评论 -
刷题06:华为机试 HJ6
#include <iostream>using namespace std;int main(void){ long long num; cin >> num; for (int i = 2; i * i <= num; i++) { while (num % i == 0)//如果能整除i,一直整除下去,把i这个因子全部找出来 { num /= i; co原创 2021-04-02 17:01:43 · 85 阅读 · 0 评论 -
刷题05:华为机试 HJ5
#include <iostream>#include <cmath>using namespace std;int main(){ string s; while (cin >> s) { int len = s.length()-2; //去掉开始输入的'0'与'X' int temp = 0; int D = 0; for (int i = 2; i < len+2; i原创 2021-04-01 14:26:18 · 174 阅读 · 0 评论 -
刷题04:华为机试 HJ4 字符串分隔
在牛客网刷题时,在本地VS2019上可以成功测试通过各个测试用例的程序,去网页的编译器,却提示“段错误:您的程序发生段错误,可能是数组越界,堆栈溢出(比如,递归调用层数太多)等情况引起”这个错误。令人费解。...原创 2021-03-29 21:56:34 · 140 阅读 · 0 评论 -
刷题03:华为机试 HJ3
代码如下:#include <iostream>#include <algorithm> // sort(), unique()using namespace std;int main(){ int N,a; while (cin >> N) { int* p = new int[N]; for (int i = 0; i < N; i++) { cin >> a; p[i] = a; } s原创 2021-03-28 14:29:24 · 128 阅读 · 0 评论 -
刷题02:华为机试 HJ2
1、题目及代码题目描述写出一个程序,接受一个由字母、数字和空格组成的字符串,和一个字母,然后输出输入字符串中该字母的出现次数。不区分大小写。输入描述:第一行输入一个由字母和数字以及空格组成的字符串,第二行输入一个字母。输出描述:输出输入字符串中含有该字符的个数。示例1输入:ABCabcA输出:2#include <iostream>#include <string>using namespace std;int main(){ stri.原创 2021-03-26 17:37:26 · 92 阅读 · 0 评论 -
刷题01:华为机试 HJ1
1、题目及代码如下:题目描述计算字符串最后一个单词的长度,单词以空格隔开。输入描述:输入一行,代表要计算的字符串,非空,长度小于5000。输出描述:输出一个整数,表示输入字符串最后一个单词的长度。示例1输入:hello nowcoder输出:8#include <iostream>#include <string>using namespace std;int main(){ string s; getline(cin,s);/.原创 2021-03-26 16:25:10 · 208 阅读 · 0 评论