牛客网——华为题库(91~100)
华为题库
- 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)相关推荐
- 牛客网——华为题库(71~80)
华为题库 71.字符串通配符 72.百钱买百鸡问题 73.计算日期到天数转换 74.参数解析 75.公共子串计算 76.尼科彻斯定理 77.火车进站 80.整型数组合并 71.字符串通配符 #incl ...
- 牛客网——华为题库(11~20)
华为题库 11.数字颠倒 12.字符串反转 13.句子逆序 14.字符串排序 15.求int型正整数在内存中存储时1的个数 16.购物单 17.坐标移动 18.识别有效的IP地址和掩码并进行分类统计 ...
- 牛客网——华为题库(41~50)
华为题库 41.称砝码 42.学英语 43.迷宫问题 44.Sudoku 45.名字的漂亮度 46.截取字符串 48.从单向链表中删除指定值的节点 50.四则运算 41.称砝码 #include &l ...
- 牛客网——华为题库(61~70)
华为题库 61.放苹果 62.查找输入整数二进制中1的个数 63.DNA序列 64.MP3光标位置 65.查找两个字符串a,b中的最长公共子串 66.配置文件恢复 67.24点游戏算法 68.成绩排序 ...
- 牛客网-SQL题库笔记
牛客网-SQL题库笔记 01.最晚入职员工的所有信息 02.查找入职员工时间排名倒数第三的员工所有信息 03.查找各个部门当前领导当前薪水详情以及其对应部门编号 04.查找所有已经分配部门的员工的la ...
- 牛客网sql题库(1-30题)—— 个人答案与过程解析
本篇博客分享一下我在牛客网sql题库刷题时,自己敲出来的结果.结果均通过了牛客网的结果验证. 具体的题目就不放在博客中了,感兴趣可以自行去搜索牛客网,找到sql题库在线编程 每道题下面都有我自己写的题 ...
- python爬取学校题库_如何使用 Python 爬虫爬取牛客网 Java 题库?
[原文链接]http://www.changxuan.top/?p=146 由于"打怪"失败,最近一直在牛客网上刷题复习备战春招.其中有个 Java专题复习题库,我刷着刷着就想把它 ...
- 如何使用 Python 爬虫爬取牛客网 Java 题库?
[原文链接]http://www.changxuan.top/?p=146 由于"打怪"失败,最近一直在牛客网上刷题复习备战春招.其中有个 Java专题复习题库,我刷着刷着就想把它 ...
- 牛客网数据开发题库_牛客网SQL题库NO.32~40
不要问为什么没有31题,大概被牛客吞掉了吧,哈哈哈哈 SQL 32[简单] 将employees表的所有员工的last_name和first_name拼接起来作为Name,中间以一个空格区分 CREA ...
最新文章
- linux 常用的系统信息查看命令
- 2.5 程序示例--非线性决策边界-机器学习笔记-斯坦福吴恩达教授
- Git clone时出现Please make sure you have the correct access rights and the repository exists.问题已解决。...
- iOS socket 套接字编程
- ios php ide,最好的PHP IDE for Mac? (最好免费!)
- iOS 警告收录及科学快速的消除方法
- 保持皮肤水嫩有光泽,让皮肤保湿的土办法 - 生活至上,美容至尚!
- hosts 下载 android
- 华为服务器信息失败,服务器远程信息失败
- 字节跳动 算法全四面 详细面经 已拿意向书
- 明明输给了 SpaceX,OneWeb 为什么还能拿到英国政府的钱?
- 搭配安卓手机领夹式麦克风的PD快充方案来了LDR6023C 分享给大家
- 【Andrioid】(转自stormzhang)Android学习之路
- php ean13,php生成EAN_13标准条形码实例_PHP教程
- 2021四川高考成绩位次查询,四川高考排名对应学校-四川高考位次查询(2021年文科参考)...
- JS--事件(Event)--使用
- PGP安装,生成密钥及上传服务器的完整步骤
- Thinkphp开发视频打赏平台源码
- Chapter 11 特征选择和稀疏学习
- 网络安全菜鸟学习之漏洞篇——XXEXML注入
热门文章
- 由高斯投影坐标反算成经纬度
- 电子商务多平台运营与实践课程设计
- simon手册翻译_part2
- 计算机科学与探索支付宝,中国第三方网上支付发展研究-以支付宝为例(毕业论文).doc...
- 郑州轻工业oj平台(1000题-1010题)
- 婚宴座位图html5,20桌婚宴座位安排图(婚宴座位顺序如何安排?)
- 文献记录(part109)--Self-Representation Based Unsupervised Exemplar Selection in a Union of Subspaces
- 有时候人们用四位数字表示一个时间,比如 1106 表示 11 点零 6 分。现在,你的程序要根据起始时间和流逝的时间计算出终止时间。 读入两个数字,第一个数字以这样的四位数字表示当前时间,第二个数字
- iOS-bug·Failed to connect to github-production-release-asset-2e65be.s3.amazonaws.com port 443:
- 计算机绘图 CAXA电子图板2009,CAXA电子图板