2014 华为校招机试题(c/c++开发类)
第一题:
1、2、3.。。。n盏灯,同时有n个人,
第1个人将1的倍数的灯拉一下,
第2个人将2的倍数的灯拉一下,
......
问最后有几盏灯是亮的,
初始状态下灯是灭的,
输入整数n(n<65536),
输出亮的灯数
方法解析:设置一个map,关键字为灯的编号,值为0或1,分别表示灯灭和灯亮状态,遍历map,第i个灯,将所有i倍数的灯进行一次取反操作,也可以通过数组实现。代码如下:
- #include "stdafx.h"
- #include <iostream>
- #include <vector>
- #include <map>
- using namespace std;
- int count1(int n)
- {
- vector<int> vec(65536, 0);
- for (int i = 1; i <= n; i++)
- {
- for (int j = 1; j <= n;j++)
- {
- if (j%i== 0)
- vec[j - 1] = !vec[j - 1];;
- }
- }
- int sum = 0;
- for (int j = 0; j < n; j++)
- {
- if (vec[j] != 0) //统计灯泡亮着的个数
- sum++;
- }
- return sum;
- }
- int count2(int n)
- {
- map<int, int> m;
- for (int i = 1; i <= n; i++) //初始化map
- m.insert({ i, 0 });
- for (int j = 1; j <= n; j++)
- {
- for (auto it = m.begin(); it != m.end(); it++)
- {
- if (it->first%j == 0)
- it->second = !(it->second);
- }
- }
- int sum = 0;
- for (auto it = m.begin(); it != m.end(); it++)
- if (it->second == 1)
- sum++;
- return sum;
- }
- int count3(int n)
- {
- int sum = 0;
- bool a[65536] = { 0 };
- for (int i = 1; i <= n; i++) //通过两嵌套循环模拟N个人一次拉灯
- {
- for (int j = 1; j <= n; j++)
- {
- if (j % i == 0)
- {
- a[j - 1] = !a[j - 1];
- }
- }
- }
- for (int j = 0; j < n; j++)
- {
- if (a[j] != 0) //统计灯泡亮着的个数
- sum++;
- }
- return sum;
- }
- int _tmain(int argc, _TCHAR* argv[])
- {
- int number1 = count1(100);
- cout << number1 << endl;
- return 0;
- }
第二题:
输入整数(n是小于9位数的整数),当作字符串处理,看是否有相同的子串,如1212,相同子串是12,141516没有子串(子串必须大于等于2),若有相同子串则输出1,否则输出0,
输入:长度小于9的整数
输出:1或0
方法解析:一开始考虑这道题时大脑短路,老是把长度为2、3、4的子串情况单独考虑,后来才想到只要保证有长度为2的子串相同即可。另外,对于string类型的成员函数substr()参数有些遗忘,这个函数的两个参数分别表示子串的起始位置和子串长度。实现代码如下:
- #include "stdafx.h"
- #include <string>
- #include <iostream>
- using namespace std;
- int fun1(string &s) //方法一:用字符数组来解决
- {
- int i = 0, j;
- int res = 0;
- for (i = 2; i < s.size() - 1; i++)
- {
- for (j = i - 1; j >= 0; j--)
- {
- if (s[i] == s[j] && s[i + 1] == s[j + 1])
- {
- res = 1;
- break;
- }
- }
- if (res == 1)
- break;
- }
- return res;
- }
- int fun2(string &s) //方法二:用string类型的子串来判断
- {
- int flag = 0;
- for (int i = 0; i < s.size()-1; i++)
- {
- for (int j = i + 2; j < s.size()-1; j++)
- {
- if (s.substr(i,2) == s.substr(j,2))
- {
- flag = 1;
- break;
- }
- if (flag)
- break;
- }
- }
- return flag;
- }
- int _tmain(int argc, _TCHAR* argv[])
- {
- string s = "13214121";
- cout <<fun1(s) << endl;
- cout<<fun2(s)<<endl;
- return 0;
- }
2014 华为校招机试题(c/c++开发类)的更多相关文章
- 华为Java机试题
1.程序实现目标: 输入一个字符串,将其各个字符对应的ASCII值加5后,输出结果. 程序要求:该字符串只包含小写字母,若其值加5后的字符值大于'z',将其转换成从a开始的字符. package co ...
- 华为OD机试题
"""最长回文字符串问题"""# 说明:方法很多,这个是最简单,也是最容易理解的一个,利用了动态规化.# 先确定回文串的右边界i,然后以右边 ...
- 优酷土豆2014校园招聘笔试题目之Java开发类
先总体说下题型,共有20道选择题,4道简答题,3道编程题和1道扩展题,题目都比较简单,限时一小时完成. 一.选择题 选择题非常简单,都是基础题,什么死锁发生的条件.HashMap和HashSet查找插 ...
- 2014华为机试西安地区B组试题
2014华为机试西安地区B组试题 题目一.亮着点灯的盏数 一条长廊里依次装有n(1≤n≤65535)盏电灯,从头到尾编号1.2.3.-n-1.n.每盏电灯由一个拉线开关控制.開始,电灯所有关着. 有n ...
- 2014华为机试西安地区A组试题
2014华为机试西安地区A组试题 题目一.分苹果 M个同样苹果放到N个同样篮子里有多少种放法,同意有篮子不放. 1<=M<=10.1<=N<=10 比如5个苹果三个篮子,3,1 ...
- 牛客网华为机试题之Python解法
牛客网华为机试题之Python解法 第1题 字符串最后一个单词的长度 a = input().split(" ") print(len(a[-1])) 第2题 计算字符个数 a = ...
- BAT及各大互联网公司2014前端笔试面试题--Html,Css篇
很多面试题是我自己面试BAT亲身经历碰到的.整理分享出来希望更多的前端er共同进步吧,不仅适用于求职者,对于巩固复习前端基础更是大有裨益. 而更多的题目是我一路以来收集的,也有往年的,答案不确保一定正 ...
- BAT及各大互联网公司2014前端笔试面试题--JavaScript篇
很多面试题是我自己面试BAT亲身经历碰到的.整理分享出来希望更多的前端er共同进步吧,不仅适用于求职者,对于巩固复习js更是大有裨益. 而更多的题目是我一路以来收集的,也有往年的,答案不确保一定正确, ...
- 面试题2:BAT及各大互联网公司2014前端笔试面试题:HTML/CSS篇
BAT及各大互联网公司2014前端笔试面试题:HTML/CSS篇 Html篇: 1.你做的页面在哪些流览器测试过?这些浏览器的内核分别是什么? IE: trident内核 Firefox:gecko内 ...
随机推荐
- model ,orm,dao,service,持久层 ,mvc 这些名词在java中的概念?
这些概念不针对某个特定的编程语言. view层:结合control层,显示前台页面. control层:业务模块流程控制,调用service层接口. service层:业务操作实现类,调用dao层接口 ...
- 动态SQL是什么??什么是静态SQL,动态SQL的动态体现在哪里???
首先,所谓SQL的动态和静态,是指SQL语句在何时被编译和执行,二者都是用在SQL嵌入式编程中的,这里所说的嵌入式是指将SQL语句嵌入在高级语言中,而不是针对于单片机的那种嵌入式编程.在某种高级语言中 ...
- 3种启动tornado的方式
r"""A non-blocking, single-threaded HTTP server. 翻译: 一个非阻塞的单线程HTTP服务器 A server is def ...
- (笔记)Linux下的ioctl()函数详解
我这里说的ioctl函数是指驱动程序里的,因为我不知道还有没有别的场合用到了它,所以就规定了我们讨论的范围.写这篇文章是因为我前一阵子被ioctl给搞混了,这几天才弄明白它,于是在这里清理一下头脑. ...
- 3ds Max 中的导航控件ViewCube入门介绍
介绍 ViewCube 3D导航控件提供当前方向的视觉反馈,让用户可以调整视图方向以及在标准视图与等距视图间进行切换. 软件环境:3d Max2015 第一步.启动3d Max软件,打开场景文件 Vi ...
- 第三百六十五节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的基本查询
第三百六十五节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的基本查询 1.elasticsearch(搜索引擎)的查询 elasticsearch是功能 ...
- 第三百三十一节,web爬虫讲解2—Scrapy框架爬虫—Scrapy安装—Scrapy指令
第三百三十一节,web爬虫讲解2—Scrapy框架爬虫—Scrapy安装—Scrapy指令 Scrapy框架安装 1.首先,终端执行命令升级pip: python -m pip install --u ...
- svn -- svn图标解析
1.代表服务器端与客户端文件相同,没有任何更改 2.当前文件如果有修改,那么将显示如下图标 3.当前要提交的文件,与服务器上其他人提交的文件有冲突,那么将显示如下图标 4.当前文件,在服务器上已被删除 ...
- Eclipse使用资源管理器打开选中文件/目录
- c# 单实例运行
/// <summary> /// 单实例运行程序 /// </summary> static void SingleInstanceRun() { bool isAppRun ...