不难,都是常规的操作,故题解写得简单点。

软件开发工程师编程题

第一题:在字典中找自己的逆序

题目

有一个单词列表,一个初始单词,初始单词需要通过单词列表逐步变换得到自己的逆序,求变换所需的最短变换路径长度。
变换规则:每次只能变动1个字母,每次变换只能从单词列表中选取。
例如:初始单词hot,其逆序为toh,单词列表[doh, got, dot, god, tod, dog, lot, log],最短变换路径为[hot,tod,doh,toh],最短变换路径长度为4
:单词列表中可包含最终单词,也可不包含最终单词,只要能够从字典中转换出最终单次即逆序初始单词即可,同时不包含初始单词;列表中每一项单词长度与初始单词相同;列表中单词不重复;所有字母均为小写。转换的最大次数为99次,转换不了输出0

解析

BFSBFSBFS就可以搞定,把逆序后的结果要添加进单词列表中,不管单词列表中之前有没有这个结果,即使有也不会影响结果。

代码

#include <bits/stdc++.h>using namespace std;int main()
{string src, des;cin >> src;des = src;reverse(des.begin(), des.end());vector<string> arr;for (string str; cin >> str; arr.push_back(str)) {}arr.push_back(des);queue<pair<string, int> > que;que.emplace(src, 1);bool isOk = false;while (!que.empty()) {auto now = que.front();que.pop();if (now.first == des) {cout << now.second << endl;isOk = true;break;}if (now.second > 99)continue;for (auto it = arr.begin(); it != arr.end(); ++it) {int sum = 0;for (int i = 0; i < (int)now.first.size(); i++)sum += now.first[i] != (*it)[i];if (sum == 1)que.emplace(*it, now.second + 1);}}if (!isOk)puts("0");return 0;}

第二题:包机商卖机票

题目

包机切位是去哪儿网机票事业部非常重要的机票售卖方式,通常一架飞机如果航司的收益管理人员没有信心将绝大多数坐位卖出去,那么就会依靠类似去哪儿网的旅行平台或者旅行社分别承包一部分坐位来销售,航司销售人员则借此降低了航线亏损风险。如果n家包机商中的i家恰好将飞机的m个坐位全部承包完,没有任何多余或者不足,则是一次完美的包机切位,输出 perfect,否则就不够完美,输出 good,航司还需要自己销售一部分座位。

解析

二进制枚举集合,先把大于m的元素去掉,然后枚举就好了,这里最好不要用背包的解法,因为元素的值可能很大,有可能会爆内存;或者你用递归枚举集合也行。

代码

import java.util.*;public class Main {public Scanner cin = new Scanner(System.in);Main() {while (cin.hasNext()) {int n = cin.nextInt(), m = cin.nextInt();boolean isOk = false;ArrayList<Integer> arr = new ArrayList<Integer>();for (int i = 0, x; i < n; i++)if ((x = cin.nextInt()) <= m)arr.add(x);for (int i = 0; i < (1 << arr.size()); i++) {int sum = 0;for (int bit = 0; bit < arr.size(); bit++)if ((i & (1 << bit)) != 0)sum += arr.get(bit);if (sum == m) {isOk = true;break;}}System.out.println(isOk ? "perfect" : "good");}}public static void main(String[] args) {new Main();}
}

开发工程师编程题

第一题,大家应该都会。

第二题:网络连通性检查

题目

一个网络有N个节点(编号为0 ~ N-1)和M条路,管理员会让你检查一些节点间是否联通

解析

并查集入门题,先根据给出的图建立并查集,然后在询问中看看两个节点的父亲是否一样就行了。

代码

#include <bits/stdc++.h>using namespace std;#define MAX_LINE 1005int p[MAX_LINE];int find(int x)
{return x == p[x] ? x : (p[x] = find(p[x]));
}int main()
{for (int n, m, q; cin >> n >> m; ) {for (int i = 0; i < n; p[i] = i, ++i) {}for (int i = 0, x, y; i < m; i++) {cin >> x >> y;int fa = find(x), fb = find(y);if (fa != fb)p[fb] = fa;}int ans = 0;cin >> q;for (int x, y; q--; ) {cin >> x >> y;if (find(x) == find(y))++ans;}cout << ans << endl;}return 0;
}

去哪儿网2018春招软件开发工程师、前端开发工程师编程题 - 题解相关推荐

  1. 去哪儿网2018春招软件开发工程师、前段开发工程师编程题 - 题解

    不难,都是常规的操作,故题解写得简单点. 软件开发工程师编程题 第一题:在字典中找自己的逆序 题目 有一个单词列表,一个初始单词,初始单词需要通过单词列表逐步变换得到自己的逆序,求变换所需的最短变换路 ...

  2. 今日头条2018校园招聘后端开发工程师(第四批)编程题 - 题解

    做过第三批的题目,今日头条2018校园招聘后端开发工程师(第三批)编程题 - 题解和第二批的题目,今日头条2018校园招聘后端开发工程师(第二批)编程题 - 题解. 这一场题目还是挺好玩的,也挺有技巧 ...

  3. 今日头条2018校园招聘后端开发工程师(第三批)编程题 - 题解

    昨天做了下头条的后端开发工程师的编程题,这编码量大啊,两个小时,三个编程题,一个改错题,一个设计题,说实话,很考技术含量,而且编程题中有两个还特别考细心编码,如果两个小时能做三个题,确实非常不错了,写 ...

  4. 去哪儿网2017春招在线笔试

    第一题,给二叉树的先序遍历和中序遍历,求层序遍历. 这个...大二做的... 根据先序和中序的性质,先序第一个节点一定是根,在中序中找到根的位置,左边的就是左子树,右边的就是右子树,递归就好. 递归建 ...

  5. “去哪儿网”2015春招前端面试题

    第一题:给定有序数组,从中找出指定数字下标,如果没找到,返回-1.(记忆中题目描述大概是这样子) /*num:待查找的数据*/Array.prototype.searchIndex = functio ...

  6. 今日头条2018校园招聘后端开发工程师(第二批)编程题 - 题解

    以前做过第三批的题目,今日头条2018校园招聘后端开发工程师(第三批)编程题 - 题解.这一场的题目偏技巧和算法,而第三批的题偏编码.这一场涉及的算法有二分查找.区间动态规划. 原题链接:点这儿. 第 ...

  7. 2018春招实习笔试面试总结(PHP)

    2018春招实习笔试面试总结(PHP) 博主双非渣本计算机软件大三狗一枚,眼看着春招就要结束了,现将自己所经历的的整个春招做一个个人总结. 首先就是关于投递计划,博主自己整理了一份各大公司的春招信息, ...

  8. 2018春招便利蜂--你的准备永远不能覆盖面试官的提问

    这两天投了一波简历,昨天陪女友去听的宣讲会,之后答了笔试题,今天面试,给了口头offer. --记2018春招第一面 笔试题: 1.一个数组里全是正整数,将这个数组中的数字排序后,从前向后输出的正整数 ...

  9. 2018深信服java笔试题_深信服2018春招笔试题解

    原文链接:点这儿. 深信服还是一如既往的"懒",2018秋招的5个编程题在本次春招出现了三道,然后添加了一道新的编程题,且选择题和填空题基本与秋招的雷同,看来之前没看深信服2018 ...

  10. 多益2018春招前端技术面试

    2018春招,多益网络内推,前端开发工程师,技术面问题 据我了解,从一月到三月份年,多益一共启动了至少三批春招招聘.从同学的反馈来看,一月份考验刚结束的那批春招通过率比较高.至于我个人,参加的是三月份 ...

最新文章

  1. IBM苏中:怎样利用深度学习、增强学习等方法提高信息处理效率
  2. Linux系统调用-- mount/umount函数详解
  3. sql截取字符串并把字符串插入到表中的存储过程
  4. html5 white space,CSS white-space 属性
  5. 如何在Java Reflection中的类下获取所有方法信息?
  6. django 1.8 官方文档翻译: 1-2-4 编写你的第一个Django应用,第4部分
  7. Redmi K50标准版工信部入网:搭载骁龙870 没有12GB内存
  8. VRay5材质库下载慢、快速安装的解决办法
  9. 购书网站前端实现(HTML+CSS+JavaScript)
  10. 用excel制作双层饼图_原创教程:用Excel做动态双层饼图
  11. BZOJ4556:[Tjoi2016Heoi2016]字符串 (后缀自动机+树上倍增+二分答案+线段树合并)
  12. 自动驾驶路径规划——A*(Astar)算法
  13. 全球及中国EOG放大器行业运行状况与投资前景建议报告2021-2027年版
  14. win7虚拟机不安装VMware Tools实现传输文件
  15. 手机照片丢失怎么才能恢复
  16. 小白也能写前端?推荐一款超实用的app----JsHD调试器,助你写出炫酷的网页!
  17. 这是一篇理工男写的口红科普文
  18. 华为项目管理的精髓干货!可收藏
  19. Star miscellaneous
  20. 讨论主题:人工智能对人类社会发展的影响(弊大于利)

热门文章

  1. 晶闸管相控交流调压的详细计算
  2. linux上压缩pdf文件,如何压缩PDF文件?
  3. JS实现省市县三级联动
  4. JS 三级联动之 省市县。
  5. mysql创建视图步骤_MySQL创建视图的详细步骤
  6. asp.net扫描仪编程及ajax图片数据上传
  7. 试验设计[实验设计]
  8. c4d渲染测试软件,C4D常用的4大主流渲染器
  9. 服务器raid发生故障如何恢复数据?- raid5磁盘阵列数据恢复方法
  10. 苹果系统虚拟机无usb服务器,苹果电脑Mac系统中VMware虚拟机无法识别USB Key的解决方法...