华为题库

  • 91.走方格的方案数
  • 92.在字符串中找出连续最长的数字串
  • 93.数组分组
  • 94.记票统计
  • 95.人民币转换
  • 96.表示数字
  • 97.记负均正
  • 98.自动售货系统
  • 99.自守数
  • 100.等差数列

91.走方格的方案数

#include <bits/stdc++.h>using namespace std;int main(){int n = 0, m = 0;while(cin >> n >> m){vector<vector<int>> dp(n + 1, vector<int>(m + 1, 0));for(int i = 0; i <= n; i++){dp[i][0] = 1;}for(int j = 0; j <= m; j++){dp[0][j] = 1;}for(int i = 1; i <= n; i++){for(int j = 0; j <= m; j++){dp[i][j] = dp[i - 1][j] + dp[i][j - 1]; //}}cout << dp[n][m] << endl;}return 0;
}

92.在字符串中找出连续最长的数字串

#include <bits/stdc++.h>
using namespace std;int main() {string s = "";while(cin >> s){vector<pair<string, int>> res;int right = 0;int maxLength = INT_MIN;for(int i = 0; i < s.size(); i++){if(isdigit(s[i])){right = i;while(right < s.size() && isdigit(s[right])){right++;}if(right - i> maxLength){string tmp = s.substr(i, right - i);res.clear();res.push_back(make_pair(tmp, tmp.size()));maxLength = right - i;}else if(right - i == maxLength){string tmp = s.substr(i, right - i);string str = res[0].first + tmp;res.clear();res.push_back(make_pair(str, tmp.size()));}i = right;}}//输出for(auto iter = res.begin(); iter != res.end(); iter++){cout << iter->first << "," << iter->second << endl;}}
}

93.数组分组

#include <bits/stdc++.h>using namespace std;bool dp(vector<int> &nums, int t, int k){if(t == 0 && k == nums.size()) return true;if(k == nums.size()) return false;//如果只是3的倍数,不能加到该集合中。if(nums[k] % 3 == 0) return dp(nums, t, k + 1);if(nums[k] == t) return true;//对于一个数有两种选择,加或者不加到该集合中return dp(nums, t - nums[k], k + 1) || dp(nums, t, k + 1); //
}int main(){int n = 0;while(cin >> n){/*//法一vector<int> nums;int sum = 0; //只要找到总和的一半即可,剩下的数字之和自然为总和的一半。int part = 0; //5的倍数的数字之和for(int i =0; i < n; i++){int num = 0;cin >> num;if(num % 5 == 0) part += num; //如果是5的倍数,不放入数组numselse nums.push_back(num);sum += num;}//如果所有数之和不是偶数,则肯定是falseif (sum%2){cout<<"false"<<endl;}else{sum = sum / 2;if(dp(nums, sum - part, 0)){cout << "true" << endl;}else cout<<"false"<<endl;}nums.clear();*///法二vector<int> arr;int sum3 = 0;int sum5 = 0;int rest = 0; //剩余的数的和for(int i = 0; i < n; i++){int x;cin >> x;if(x % 5 == 0) //先求一个组的和sum5 += x;else if(x % 3 == 0) //再求另一个组的和sum3 += x;else{arr.push_back(x); //剩余的加入数组并求和rest += x;}}//unordered_set<int> s1, s2;s1.insert(0); //枚举所有组合的不重复和,0代表空数组for(int i = 0; i < arr.size(); i++){ //遍历剩余的每一个数字,枚举所有可能性s2 = s1; //for(auto iter : s2){s1.insert(iter + arr[i]); //s1中保存的是所有的剩余数的和的可能性}}bool res = false;for(auto iter : s1){ //遍历枚举的集合if(iter + sum5 == sum3 + (rest - iter)){ //分成两部分后相等res = true;break;}}cout << (res ? "true" : "false") << endl;}return 0;
}

94.记票统计

#include <bits/stdc++.h>using namespace std;int main(){int n = 0; //候选人的人数cin >> n;vector<string> name(n, ""); //候选人的名字for(int i = 0; i < n; i++){      string tmp = "";cin >> tmp;name[i] = tmp;}int num = 0; //投票人的人数cin >> num;vector<string> touPiao(num, ""); //投票for(int i = 0; i < num; i++){string tmp = "";cin >> tmp;touPiao[i] = tmp;}unordered_map<string, int> m;for(int i = 0; i < n; i++){      m[name[i]] = 0; //初始化}int invalid = 0;for(int i = 0; i < touPiao.size(); i++){bool isValid = false;for(int j = 0; j < name.size(); j++){if(touPiao[i] == name[j]){m[name[j]]++;isValid = true;}}//投票的名字不存在n个候选人的名字中if(!isValid){invalid++;}}//输出for(int i = 0; i < n; i++){cout << name[i] << " : " << m[name[i]] << endl;}cout << "Invalid" << " : " << invalid << endl;return 0;
}

95.人民币转换

#include <bits/stdc++.h>using namespace std;unordered_map<int, string> m ={{0, "零"},{1, "壹"},{2, "贰"},{3, "叁"},{4, "肆"},{5, "伍"},{6, "陆"},{7, "柒"},{8, "捌"},{9, "玖"},{10, "拾"},
};// 输入:151121.15
// 输出:人民币拾伍万壹仟壹佰贰拾壹元壹角伍分
void sayPre(string pre, string& res){if (pre == "0") return ; // 判断小数点前面是不是空的for(int i = 0, j = pre.size() - 1; i < pre.size(); i++, j--){// i代表的是我们遍历的字符串, j是我们i后面有几个数if(pre[i] != '0' && !(pre[i] == '1' && j % 4 == 1)){res += m[pre[i] - '0'];}//转换中文  // if分别对应后面输出的亿万千百十if(j != 0 && j >= 8 && j % 8 == 0){res += "亿";}if (j != 0 and j % 4 == 0 and j % 8 != 0)pre[i + 1] == '0' ? res += "万零" : res += "万";if (j != 0 and j % 4 == 3 and pre[i] != '0')pre[i + 1] == '0' && pre[i + 2] != '0' ? res += "仟零" : res += "仟";if (j != 0 and j % 4 == 2 and pre[i] != '0')pre[i + 1] == '0' && pre[i + 2] != '0' ? res += "佰零" : res += "佰";if (j != 0 and j % 4 == 1 and pre[i] != '0')res += "拾";}res += "元"; // 最后我们输出元
}void sayEnd(string end, string& res){if (end == "00")res += "整";else if (end[0] == '0')res += m[end[1] - '0'] + "分";else if (end[1] == '0')res += m[end[0] - '0'] + "角";elseres += m[end[0] - '0'] + "角" + m[end[1] - '0'] + "分";// 分类讨论, 讨论我们小数点后两位的所有情况
}int main(){string s = "";while(cin >> s){string res = "";res += "人民币";string pre = "", end = "";bool xiaoShuDian = false;for(char ch : s){if(ch == '.'){xiaoShuDian = true;continue;}// 这里我们以小数点为分隔, 把小数点前面的存储到了pre里面,// 小数点后面的存储到了end里面xiaoShuDian ? end += ch : pre += ch;}sayPre(pre, res);sayEnd(end, res);cout << res << endl;}
}

96.表示数字

#include <bits/stdc++.h>using namespace std;int main(){string s = "";while(cin >> s){string res = "";int i = 0; //while(i < s.size()){          if(isdigit(s[i])){res += "*";int right = i;while(right < s.size() && isdigit(s[right])){     res += s[right];right++;i++;}res += "*";}else{res += s[i];i++;}        }cout << res << endl;}return 0;
}

97.记负均正

#include <bits/stdc++.h>using namespace std;int main(){int n = 0;while(cin >> n){int negNums = 0;double sum = 0, cnt = 0;vector<int> nums(n, 0);for(int i = 0; i < n; i++){int num = 0;cin >> num;nums[i] = num;if(num < 0){negNums++;}else if(num > 0){cnt++;sum += num;}}double aveNum = 0.0;if(cnt != 0)aveNum = (double)sum / cnt; //sum * 1.0 / cnt//结果保留一位小数printf("%d %.1f\n", negNums, aveNum); //}return 0;
}

98.自动售货系统

99.自守数

#include <bits/stdc++.h>
using namespace std;bool isZiShouShu(int num){int tmp = num * num;string s1 = to_string(num);string s2 = to_string(tmp);reverse(s1.begin(), s1.end());reverse(s2.begin(), s2.end());//cout << s1 << "," << s2 << endl;int i = 0;while(i < s1.size()){if(s1[i] != s2[i]){return false;}i++;}return true;
}int main(){int n = 0;while(cin >> n){int res = 0;for(int i = 0; i <= n; i++){if(isZiShouShu(i)) res++;}cout << res << endl;}return 0;
}

100.等差数列

#include <bits/stdc++.h>using namespace std;#define a1 2
#define d 3int main(){int n = 0; while(cin >> n){int res = 0;int an = a1 + (n - 1) * d;res = (a1 + an) * n / 2;cout << res << endl;}return 0;
}

牛客网——华为题库(91~100)相关推荐

  1. 牛客网——华为题库(71~80)

    华为题库 71.字符串通配符 72.百钱买百鸡问题 73.计算日期到天数转换 74.参数解析 75.公共子串计算 76.尼科彻斯定理 77.火车进站 80.整型数组合并 71.字符串通配符 #incl ...

  2. 牛客网——华为题库(11~20)

    华为题库 11.数字颠倒 12.字符串反转 13.句子逆序 14.字符串排序 15.求int型正整数在内存中存储时1的个数 16.购物单 17.坐标移动 18.识别有效的IP地址和掩码并进行分类统计 ...

  3. 牛客网——华为题库(41~50)

    华为题库 41.称砝码 42.学英语 43.迷宫问题 44.Sudoku 45.名字的漂亮度 46.截取字符串 48.从单向链表中删除指定值的节点 50.四则运算 41.称砝码 #include &l ...

  4. 牛客网——华为题库(61~70)

    华为题库 61.放苹果 62.查找输入整数二进制中1的个数 63.DNA序列 64.MP3光标位置 65.查找两个字符串a,b中的最长公共子串 66.配置文件恢复 67.24点游戏算法 68.成绩排序 ...

  5. 牛客网-SQL题库笔记

    牛客网-SQL题库笔记 01.最晚入职员工的所有信息 02.查找入职员工时间排名倒数第三的员工所有信息 03.查找各个部门当前领导当前薪水详情以及其对应部门编号 04.查找所有已经分配部门的员工的la ...

  6. 牛客网sql题库(1-30题)—— 个人答案与过程解析

    本篇博客分享一下我在牛客网sql题库刷题时,自己敲出来的结果.结果均通过了牛客网的结果验证. 具体的题目就不放在博客中了,感兴趣可以自行去搜索牛客网,找到sql题库在线编程 每道题下面都有我自己写的题 ...

  7. python爬取学校题库_如何使用 Python 爬虫爬取牛客网 Java 题库?

    [原文链接]http://www.changxuan.top/?p=146 由于"打怪"失败,最近一直在牛客网上刷题复习备战春招.其中有个 Java专题复习题库,我刷着刷着就想把它 ...

  8. 如何使用 Python 爬虫爬取牛客网 Java 题库?

    [原文链接]http://www.changxuan.top/?p=146 由于"打怪"失败,最近一直在牛客网上刷题复习备战春招.其中有个 Java专题复习题库,我刷着刷着就想把它 ...

  9. 牛客网数据开发题库_牛客网SQL题库NO.32~40

    不要问为什么没有31题,大概被牛客吞掉了吧,哈哈哈哈 SQL 32[简单] 将employees表的所有员工的last_name和first_name拼接起来作为Name,中间以一个空格区分 CREA ...

最新文章

  1. linux 常用的系统信息查看命令
  2. 2.5 程序示例--非线性决策边界-机器学习笔记-斯坦福吴恩达教授
  3. Git clone时出现Please make sure you have the correct access rights and the repository exists.问题已解决。...
  4. iOS socket 套接字编程
  5. ios php ide,最好的PHP IDE for Mac? (最好免费!)
  6. iOS 警告收录及科学快速的消除方法
  7. 保持皮肤水嫩有光泽,让皮肤保湿的土办法 - 生活至上,美容至尚!
  8. hosts 下载 android
  9. 华为服务器信息失败,服务器远程信息失败
  10. 字节跳动 算法全四面 详细面经 已拿意向书
  11. 明明输给了 SpaceX,OneWeb 为什么还能拿到英国政府的钱?
  12. 搭配安卓手机领夹式麦克风的PD快充方案来了LDR6023C 分享给大家
  13. 【Andrioid】(转自stormzhang)Android学习之路
  14. php ean13,php生成EAN_13标准条形码实例_PHP教程
  15. 2021四川高考成绩位次查询,四川高考排名对应学校-四川高考位次查询(2021年文科参考)...
  16. JS--事件(Event)--使用
  17. PGP安装,生成密钥及上传服务器的完整步骤
  18. Thinkphp开发视频打赏平台源码
  19. Chapter 11 特征选择和稀疏学习
  20. 网络安全菜鸟学习之漏洞篇——XXEXML注入

热门文章

  1. 由高斯投影坐标反算成经纬度
  2. 电子商务多平台运营与实践课程设计
  3. simon手册翻译_part2
  4. 计算机科学与探索支付宝,中国第三方网上支付发展研究-以支付宝为例(毕业论文).doc...
  5. 郑州轻工业oj平台(1000题-1010题)
  6. 婚宴座位图html5,20桌婚宴座位安排图(婚宴座位顺序如何安排?)
  7. 文献记录(part109)--Self-Representation Based Unsupervised Exemplar Selection in a Union of Subspaces
  8. 有时候人们用四位数字表示一个时间,比如 1106 表示 11 点零 6 分。现在,你的程序要根据起始时间和流逝的时间计算出终止时间。 读入两个数字,第一个数字以这样的四位数字表示当前时间,第二个数字
  9. iOS-bug·Failed to connect to github-production-release-asset-2e65be.s3.amazonaws.com port 443:
  10. 计算机绘图 CAXA电子图板2009,CAXA电子图板