别家的笔试总是做的很差,偏偏做华为的就有状态。。。

首先得感谢牛客的@当可乐遇上曼妥思贴出来的题目

1.

给你N行M列的人,他们是一个方阵。左上角是(0,0),右下角是(n-1, m-1),最外圈的人顺时针报数,当他们报的数个位是7并且十位是奇数,就选出来。外圈报完了内圈接着报,一直到所有人都报完,问最后选出来的是哪些。

要求是10<=n,m<=1000,如果输入不合法,那么就是返回空数组。
好像很多人卡在空数组的输出上了。

输入
10 10
输出
[[7,9],[1,1],[8,2],[7,5],[4,4]]


#include <iostream>
#include<vector>
#include<algorithm>
#include<map>
#include<string>
using namespace std;bool isvalid(int count) {if (count % 10 == 7 && (count / 10) % 2 == 1)return true;else return false;
}
int main() {int m, n;cin >> m >> n;if (m <10 || n < 10 || n>1000 || m>1000) {cout << "[]";return 0;}vector<vector<int>> res;int up = 0, down = m - 1, left = 0, right = n - 1;int count = 0;while (up <= down && left <= right) {for (int i = left; i <= right; i++) {count++;if (isvalid(count))res.push_back({ up,i });}up++;for (int i = up; i <= down; i++) {count++;if (isvalid(count))res.push_back({ i,right });}right--;for (int i = right; i >= left; i--) {count++;if (isvalid(count))res.push_back({ down,i });}down--;for (int i = down; i >= up; i--) {count++;if (isvalid(count))res.push_back({ i,left });}left++;}cout << '[';for (int i = 0; i<res.size(); i++) {if (i == res.size() - 1)cout << '[' << res[i][0] << ',' << res[i][1] << ']';else cout << '[' << res[i][0] << ',' << res[i][1] << ']' << ',';}cout << ']';return 0;}

2.

给你N个节点,然后输入他们所在的高度,问最后的二叉树可以有几种,结果可能很大,对10^9+7 取模

输入
4 1 0 2 2
输出
2

例子
x
/
x
/
x x
或者

x

x
/
x x
写的很简陋,没全A,其实就是排列组合题,抽空看下通用写法,溢出太烦人了


#include <iostream>
#include<vector>
#include<algorithm>
#include<map>using namespace std;//排列组合问题
int cmn(long long m, long long n) {if (m == n)return 1;if (m - n<n) n = m - n;long long res = 1;while (m>0) {res *= m--;}while (n>0) {res /= n--;}return (int)(res % 1000000007);
}
int main() {int n;cin >> n;vector<int> nums(n, 0);map<int,int> statis;int temp;for (int i = 0; i<n; i++) {cin >> temp;nums[i] = temp;statis[temp]++;}sort(nums.begin(), nums.end());if (statis.rbegin()->first > statis.size()-1) {cout << 0 << endl;return 0;}int res = 1;auto preitr = statis.begin();if (preitr->second > 1 || preitr->second == 0) {cout << 0;return 0;}for (auto itr = statis.begin(); itr != statis.end(); itr++) {if (itr == statis.begin())continue;if (itr->second > 2 * preitr->second) {cout << 0;return 0;}res = (res*cmn(pow(2, preitr->second), itr->second)) % 100000007;preitr = itr;}cout << res;return 0;}

3.

现在有一个已经落下来了一些的俄罗斯方块,我们用一个字符串表示,分别代表每个位置上已经落了多少块了。比如2202,就是下图

现在,有一个新的俄罗斯方块要掉下来,它的描述也是类似的,

例如121,就是下图

掉下来的块,一定保证是上底对齐的,并且不会出现下图这种情况

然后众所周知,落下来以后,如果一行没有间断的话,那么这一行就能消掉了,上面的那些就会往下落。

掉下来的块不能旋转,可以左右平移,但不能超出边界,让你最后没有被消除的行数尽可能小,问你这个值是多大。

输入
2202
2
输出
0

如果你不把2放在原本的0处的话,那么现在的未消行数就是4


#include <iostream>
#include<vector>
#include<algorithm>
#include<map>
#include<string>using namespace std;int main() {string frame;cin >> frame;string brick;cin >> brick;int n = frame.size(), m = brick.size();int len = n - m + 1;int res=99999;for (int i = 0; i<len; i++) {int minval = 99999, maxval = -99999;string cframe = frame;int l = 0;for (int j = i; j<i + m; j++) {cframe[j] += (brick[l++] - '0');}for (int k = 0; k<n; k++) {minval = min(minval, (int)cframe[k]);maxval = max(maxval, (int)cframe[k]);}res = min(res, maxval - minval);}cout << res;return 0;}

8.19华为笔试题目c++相关推荐

  1. C/C++ 华为笔试题目

    目录 1.字符串最后一个单词 2.计算字符个数 3.排序与去重 4.字符串分割 5.进制转换 6.质数因子 7.取近似值 8.合并表记录 9.提取不重复的整数 10.字符个数统计 11.数字颠倒 12 ...

  2. 关于一道华为笔试题目考奈奎斯特频率相关的解析

    题目内容 这道题目考察奈奎斯特采样频率相关 背景知识 香农采样定理 香农采样定理,又称奈奎斯特采样定理,是信息论,特别是通讯与信号处理学科中的一个重要基本结论.1924年奈奎斯特(Nyquist)就推 ...

  3. 旅行商问题(华为笔试蜜蜂采蜜问题)

    旅行商问题是算法中比较难的一类题目,也是比较综合的题目之一,其变种的题目也非常灵活,应用场景非常广泛,前段时间在做华为笔试题目的时候,遇到了一个与旅行商问题相关的蜜蜂飞行采花粉问题: 题目大意是:一个 ...

  4. 【转载】旅行商问题(华为笔试蜜蜂采蜜问题)

    本文转载链接: https://blog.csdn.net/qq_29592167/article/details/90243408 感谢来自Raintin_coder的分享 旅行商问题是算法中比较难 ...

  5. 数字 IC 设计、FPGA 设计秋招笔试题目、答案、解析(2)2021 华为海思(上)

    引言 最近收到诸多粉丝的来信,要求出一版<数字 IC 设计.FPGA 设计秋招笔试题精讲>,于是,通过几天几夜的加班加点,终于出了这一版<2021 华为海思秋招笔试题目.答案.解析& ...

  6. 华为2018春招笔试题目 字节流解析与长整数相乘

    基础知识杂烩: 字节也叫Byte,是计算机数据的基本存储单位, bit存储内容是0和1,bit是计算机中最小的储存单位 一个Byte是由8个bit组成,它是最小的可寻址单元 ,1个字节等于8位二进制. ...

  7. 华为c语言笔试形式,最新华为C语言笔试题目分享

    最新华为C语言笔试题目分享 华为C语言笔试题目分享: 一.判断 1.有数组定义inta[2][2]={{1},{2,3}};则a[0][1]的值为0.() 2.int(*ptr)(),则ptr是一维数 ...

  8. 转:九月十月百度人搜,阿里巴巴,腾讯华为笔试面试八十题(第331-410题)

    分类: 05.MS 100' original 2012-09-13 12:38 108951人阅读 评论(346) 收藏 举报 目录(?)[+] 九月十月百度人搜,阿里巴巴,腾讯华为小米搜狗笔试面试 ...

  9. 100条经典C++笔试题目及答案分享

    100条经典C++笔试题目分享 一.C++与C差异(1-17) 二.数据类型.关键字(18-37) 三.C++面向对象的特性(38-61) 四.程序阅读题(62-89) 五.编程练习(90-100) ...

最新文章

  1. PNG透明兼容IE6的几种方法
  2. 线程执行者(十一)执行者分离任务的启动和结果的处理
  3. 修复Eclipse在Mac OSX下启动时卡住问题
  4. Linux操作系统下查找文件的几种方法
  5. 计算机科学导论 第4版,计算机科学导论.第4版
  6. SpringBoot 基础上传操作
  7. 流量管理的7大技术流派
  8. 计算机开机出现ROM,电脑无法开机提示exiting pxe rom的解决办法
  9. iOS 代码命名规范 及Android 代码命名规范(2)Android
  10. 百度开源的71款项目
  11. mysql查询不到的数据补0
  12. Matlab二元函数图像绘制
  13. Android控件绑定menu键
  14. 读书笔记-项目计划、进度与控制
  15. 深圳高新区发展专项计划管理办法(征求意见稿)
  16. 与泽风格--爱的季节
  17. Android练手小项目--仿72g赚吧App
  18. Pycharm创建项目“New environment using“与“Existing interpreter“的区别
  19. 【CSAPP】计算机系统知识点(新国立NUS课程,中文版)
  20. Vulkan spec 中文版 翻译基础版本切换

热门文章

  1. 自己制作的直流电机驱动器
  2. 小程序引入的echarts过大如何解决_在微信小程序中使用 ECharts
  3. js实现复仇者联盟点名器
  4. python 基于CQL操作neo4j数据库
  5. Debian10英语环境安装搜狗输入法
  6. 【动手学习pytorch笔记】28.机器翻译数据集
  7. Android系统移植与调试之-------build.prop文件详细赏析
  8. 人民币和美元兑换的编程python_python人民币和美元转换
  9. arm mali 天梯图_手机cpu天梯图2019年4月最新排行 手机处理器性能天梯图
  10. RJ45接头 和 RJ48接头的区别