华为上机题汇总(九)
来源:互联网 发布:网络直播受众群体 编辑:程序博客网 时间:2024/05/16 15:59
华为上机题汇总(九)
注:编译环境为Visual Studio 2012,答案仅供参考。
目录
- 华为上机题汇总九
- 目录
- 第四十一题
- 第四十二题
- 第四十三题
- 第四十四题
- 第四十五题
第四十一题
41.输入m个字符串 和一个整数n, 把字符串M化成以N为单位的段,不足的位数用0补齐。
如 n=8 m=9 ,
123456789划分为:12345678
90000000
123化为 :12300000
#include <iostream>#include <string>using namespace std;int main(){ string s; getline(cin,s); int n; cin >> n; for (unsigned i = 0; i < s.size(); i++) { cout << s[i]; if ((i+1) % n == 0) cout << " "; } int residual = s.size() % n; if (!residual) { cout << endl; return 0; } for (int i = 0; i < n - residual; i++) { cout << "0"; } cout << endl; return 0;}
第四十二题
42.整数化为2进制数,32位长度。然后逆序输出
#include <iostream>#include <vector>using namespace std;int main(){ int n; cin >> n; vector<int> v(32,0); int i = 31; while (n != 0) { v[i--] = n % 2; n /= 2; } for (auto b = v.rbegin();b != v.rend();++b){ cout << *b; } cout << endl; return 0;}
第四十三题
43.0-1背包问题
给定一个数,比如20
然后 再给定几个数字 1 3 5 7 8
1 3 5 7 8
0 0 1 1 1
因为5+7+8=20
#include <iostream>#include <vector>using namespace std;bool find(int value, int n, const vector<int> &v, vector<bool> &flags){ if (value == 0) { return true; } if ((value > 0 && n <= 0) || value < 0) { return false; } if (find(value - v[n-1], n-1, v, flags)) { flags[n-1] = 1; return true; } return find(value, n-1, v, flags);}int main(){ int value; cin >> value; vector<int> v; vector<bool> flags; int num; while (cin >> num && num != 0) { v.push_back(num); flags.push_back(false); } if (find(value, v.size(), v, flags)) { for (unsigned i = 0; i < flags.size(); i++) { cout << flags[i] << " "; } cout << endl; return 0; } cout << "ERRPR" << endl; return 0;}
第四十四题
44.输入整型数组求数组的最小数和最大数之和,例如输入1,2,3,4则输出为5,当输入只有一个数的时候,则最小数和最大数都是该数,例如只输入1,则输出为2;另外数组的长度不超过50
#include <iostream>#include <string>using namespace std;bool minAddMax(int a[], int n, int &result){ if (n <= 0 || n > 50) { return false; } int min = a[0], max = a[0]; for (int i = 1; i < n; i++) { if (a[i] < min) { min = a[i]; } if (a[i] > max) { max = a[i]; } } result = min + max; return true;}int main(){ int a[] = {1,2,3,4,5}; int result = 0; cout << (minAddMax(a,5,result) ? to_string(result) : "ERROR") << endl; return 0;}
第四十五题
45.子串转换:
将输入的字符串(字符串仅包含小写字母‘a’到‘z’),按照如下规则,循环转换后输出:a->b,b->c,…,y->z,z->a;若输入的字符串连续出现两个字母相同时,后一个字母需要连续转换2次。例如:aa 转换为 bc,zz 转换为 ab;当连续相同字母超过两个时,第三个出现的字母按第一次出现算。
要求实现函数:
void convert(char input,char output)
【输入】 char *input , 输入的字符串
【输出】 char *output ,输出的字符串
【返回】 无
#include <iostream>using namespace std;void convert(char *input,char* output){ while (*input != '\0') { char *ahead = input + 1; if (*ahead == *input) { *output++ = ((*input++) - 'a' + 1) % 26 + 'a'; *output++ = ((*input++) - 'a' + 2) % 26 + 'a'; continue; } *output++ = ((*input++) - 'a' + 1) % 26 + 'a'; } *output = '\0';}int main(){ char input[100],output[100]; cin.getline(input,100); convert(input, output); cout << output << endl; return 0;}
1 0
- 华为上机题汇总(九)
- 华为上机题汇总
- 华为上机题汇总(一)
- 华为上机题汇总(二)
- 华为上机题汇总(三)
- 华为上机题汇总(四)
- 华为上机题汇总(五)
- 华为上机题汇总(六)
- 华为上机题汇总(七)
- 华为上机题汇总(八)
- 华为上机题汇总(十)
- 华为上机题汇总(十一)
- 华为上机题汇总(十二)
- 华为上机题汇总(十三)
- 华为上机题汇总(十四)
- 华为上机题汇总(十五)
- 华为上机题汇总(十六)
- 华为上机题汇总(十七)
- 动态规划刷表法
- Codeforces 505B
- javascript高级程序设计读书笔记--BOM
- HDU1362Surround the Trees 最小凸多边形覆盖
- Codeforces 25C
- 华为上机题汇总(九)
- JS Cookie封装
- Android -- Wifi的save()操作
- 设置Launch Image 启动图片
- 冒泡排序算法
- 闪屏制作
- html5 常用 标签
- socket is closed异常的原因及其解决方法
- Java JDK Reflect