第一题

1、2、3.。。。n盏灯,同时有n个人,

第1个人将1的倍数的灯拉一下,

第2个人将2的倍数的灯拉一下,

......

问最后有几盏灯是亮的,

初始状态下灯是灭的,

输入整数n(n<65536),

输出亮的灯数

方法解析:设置一个map,关键字为灯的编号,值为0或1,分别表示灯灭和灯亮状态,遍历map,第i个灯,将所有i倍数的灯进行一次取反操作,也可以通过数组实现。代码如下:

  1. #include "stdafx.h"
  2. #include <iostream>
  3. #include <vector>
  4. #include <map>
  5. using namespace std;
  6. int count1(int n)
  7. {
  8. vector<int> vec(65536, 0);
  9. for (int i = 1; i <= n; i++)
  10. {
  11. for (int j = 1; j <= n;j++)
  12. {
  13. if (j%i== 0)
  14. vec[j - 1] = !vec[j - 1];;
  15. }
  16. }
  17. int sum = 0;
  18. for (int j = 0; j < n; j++)
  19. {
  20. if (vec[j] != 0)      //统计灯泡亮着的个数
  21. sum++;
  22. }
  23. return sum;
  24. }
  25. int count2(int n)
  26. {
  27. map<int, int> m;
  28. for (int i = 1; i <= n; i++)      //初始化map
  29. m.insert({ i, 0 });
  30. for (int j = 1; j <= n; j++)
  31. {
  32. for (auto it = m.begin(); it != m.end(); it++)
  33. {
  34. if (it->first%j == 0)
  35. it->second = !(it->second);
  36. }
  37. }
  38. int sum = 0;
  39. for (auto it = m.begin(); it != m.end(); it++)
  40. if (it->second == 1)
  41. sum++;
  42. return sum;
  43. }
  44. int count3(int n)
  45. {
  46. int sum = 0;
  47. bool a[65536] = { 0 };
  48. for (int i = 1; i <= n; i++)    //通过两嵌套循环模拟N个人一次拉灯
  49. {
  50. for (int j = 1; j <= n; j++)
  51. {
  52. if (j % i == 0)
  53. {
  54. a[j - 1] = !a[j - 1];
  55. }
  56. }
  57. }
  58. for (int j = 0; j < n; j++)
  59. {
  60. if (a[j] != 0)      //统计灯泡亮着的个数
  61. sum++;
  62. }
  63. return sum;
  64. }
  65. int _tmain(int argc, _TCHAR* argv[])
  66. {
  67. int number1 = count1(100);
  68. cout << number1 << endl;
  69. return 0;
  70. }

第二题

输入整数(n是小于9位数的整数),当作字符串处理,看是否有相同的子串,如1212,相同子串是12,141516没有子串(子串必须大于等于2),若有相同子串则输出1,否则输出0,

输入:长度小于9的整数

输出:1或0

方法解析:一开始考虑这道题时大脑短路,老是把长度为2、3、4的子串情况单独考虑,后来才想到只要保证有长度为2的子串相同即可。另外,对于string类型的成员函数substr()参数有些遗忘,这个函数的两个参数分别表示子串的起始位置和子串长度。实现代码如下:

  1. #include "stdafx.h"
  2. #include <string>
  3. #include <iostream>
  4. using namespace std;
  5. int fun1(string &s)      //方法一:用字符数组来解决
  6. {
  7. int i = 0, j;
  8. int res = 0;
  9. for (i = 2; i < s.size() - 1; i++)
  10. {
  11. for (j = i - 1; j >= 0; j--)
  12. {
  13. if (s[i] == s[j] && s[i + 1] == s[j + 1])
  14. {
  15. res = 1;
  16. break;
  17. }
  18. }
  19. if (res == 1)
  20. break;
  21. }
  22. return res;
  23. }
  24. int fun2(string &s)    //方法二:用string类型的子串来判断
  25. {
  26. int flag = 0;
  27. for (int i = 0; i < s.size()-1; i++)
  28. {
  29. for (int j = i + 2; j < s.size()-1; j++)
  30. {
  31. if (s.substr(i,2) == s.substr(j,2))
  32. {
  33. flag = 1;
  34. break;
  35. }
  36. if (flag)
  37. break;
  38. }
  39. }
  40. return flag;
  41. }
  42. int _tmain(int argc, _TCHAR* argv[])
  43. {
  44. string s = "13214121";
  45. cout <<fun1(s) << endl;
  46. cout<<fun2(s)<<endl;
  47. return 0;
  48. }

2014 华为校招机试题(c/c++开发类)的更多相关文章

  1. 华为Java机试题

    1.程序实现目标: 输入一个字符串,将其各个字符对应的ASCII值加5后,输出结果. 程序要求:该字符串只包含小写字母,若其值加5后的字符值大于'z',将其转换成从a开始的字符. package co ...

  2. 华为OD机试题

    """最长回文字符串问题"""# 说明:方法很多,这个是最简单,也是最容易理解的一个,利用了动态规化.# 先确定回文串的右边界i,然后以右边 ...

  3. 优酷土豆2014校园招聘笔试题目之Java开发类

    先总体说下题型,共有20道选择题,4道简答题,3道编程题和1道扩展题,题目都比较简单,限时一小时完成. 一.选择题 选择题非常简单,都是基础题,什么死锁发生的条件.HashMap和HashSet查找插 ...

  4. 2014华为机试西安地区B组试题

    2014华为机试西安地区B组试题 题目一.亮着点灯的盏数 一条长廊里依次装有n(1≤n≤65535)盏电灯,从头到尾编号1.2.3.-n-1.n.每盏电灯由一个拉线开关控制.開始,电灯所有关着. 有n ...

  5. 2014华为机试西安地区A组试题

    2014华为机试西安地区A组试题 题目一.分苹果 M个同样苹果放到N个同样篮子里有多少种放法,同意有篮子不放. 1<=M<=10.1<=N<=10 比如5个苹果三个篮子,3,1 ...

  6. 牛客网华为机试题之Python解法

    牛客网华为机试题之Python解法 第1题 字符串最后一个单词的长度 a = input().split(" ") print(len(a[-1])) 第2题 计算字符个数 a = ...

  7. BAT及各大互联网公司2014前端笔试面试题--Html,Css篇

    很多面试题是我自己面试BAT亲身经历碰到的.整理分享出来希望更多的前端er共同进步吧,不仅适用于求职者,对于巩固复习前端基础更是大有裨益. 而更多的题目是我一路以来收集的,也有往年的,答案不确保一定正 ...

  8. BAT及各大互联网公司2014前端笔试面试题--JavaScript篇

    很多面试题是我自己面试BAT亲身经历碰到的.整理分享出来希望更多的前端er共同进步吧,不仅适用于求职者,对于巩固复习js更是大有裨益. 而更多的题目是我一路以来收集的,也有往年的,答案不确保一定正确, ...

  9. 面试题2:BAT及各大互联网公司2014前端笔试面试题:HTML/CSS篇

    BAT及各大互联网公司2014前端笔试面试题:HTML/CSS篇 Html篇: 1.你做的页面在哪些流览器测试过?这些浏览器的内核分别是什么? IE: trident内核 Firefox:gecko内 ...

随机推荐

  1. hash模块 hashlib不可逆加密 和 base64算法加密解密

    hashlib模块 用于加密相关的操作,代替md5模块和sha模块,主要提供SHA1,SHA224,SSHA256,SHA384,SHA512,MD5算法 直接看代码案例: ---------md5- ...

  2. 2014年第五届蓝桥杯C/C++B组省赛题目解析

    一.啤酒和饮料 啤酒每罐2.3元,饮料每罐1.9元.小明买了若干啤酒和饮料,一共花了82.3元. 我们还知道他买的啤酒比饮料的数量少,请你计算他买了几罐啤酒. 注意:答案是一个整数.请通过浏览器提交答 ...

  3. Linux SSH实现无密码远程登录

      一.      SSH无密码远程登录原理 二.      SSH实现无密码远程登录 实现主机A 无密码远程登录主机B 主机A   IP地址:10.8.9.154 主机B   IP地址:10.8.9 ...

  4. 安装Java Decompiler

    原文:https://blog.csdn.net/yh_zeng2/article/details/75948467 Java Decompiler是Java语言的反编译工具,具体介绍见博客Java ...

  5. [转帖]HTML5 Audio/Video 标签,属性,方法,事件汇总

    HTML5 Audio/Video 标签,属性,方法,事件汇总 <audio>标签属性: src:音乐的URL preload:预加载 autoplay:自动播放 loop:循环播放 co ...

  6. 给zTree添加onSelect callback

    由于jquery ui没有集成tree控件,所以在网上找到了zTree v3.zTree无疑是功能非常强大的一款jquery的插件,而且是国人作品,zTree的文档写得也非常好,效果很炫.但是我在使用 ...

  7. 【WP8】键盘弹出时控制Frame位置

    WP上,当使用TextBox输入文字的时候,键盘会把TextBox向上推一段距离 当编辑第二个TextBox的时候,页面被上推,键盘刚好和TextBox靠在一起 当编辑第一个TextBox的时候,页面 ...

  8. MSM--Memcached_Session_Manager介绍及使用

    MSM--Memcached_Session_Manager介绍及使用 http://www.iteye.com/topic/1125301 我们都知道对于一些大型的web2.0的网站,在正式部署时一 ...

  9. windows server 2003R2\2008R2\2012\2016 安装【故障转移群集】cluster

    温故而知新! 靠,突然觉得it技能只要一年的时间就能忘记! virtualbox虚拟机安装群集,注意点: clone的虚拟机,sid问题.sysprep太慢了,不如重新安装快! 虚拟机增强组件,会影响 ...

  10. Cannot call sendError() after the response has been committed - baiyangliu

    当response提交后,不能调用sendError(),什么意思? 出现这个错误,一定是多次response导致的.可以这么理解,承载客户端和服务器进行Http交互的Socket连接已经关闭了,而你 ...