去哪儿网2018春招软件工程师题解

GitHib:https://github.com/FlushHip/AlgorithmnCode/tree/master/%E5%8E%BB%E5%93%AA%E5%84%BF%E7%BD%912018%E6%98%A5%E6%8B%9B%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91%E5%B7%A5%E7%A8%8B%E5%B8%88%E7%BC%96%E7%A8%8B%E9%A2%98

全部AC,

1.

BFS

#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;
}

2.

二进制枚举集合

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();
    }
}
#春招##去哪儿#
全部评论
for (string str; cin >> str; arr.push_back(str)) {}这个不是一个无限循环吗,还有后面判断num=1是什么意思呀
点赞 回复 分享
发布于 2018-04-09 20:33
 if ((i & (1 << bit)) != 0)这一句什么意思
点赞 回复 分享
发布于 2018-04-02 20:28
真大佬
点赞 回复 分享
发布于 2018-04-02 19:28
老铁 关注你好久了 牛逼!请问题面能分享一下吗,我没参加。。
点赞 回复 分享
发布于 2018-04-02 17:54
膜拜大佬
点赞 回复 分享
发布于 2018-04-02 17:25

相关推荐

珩珺:那些经历都太大太空了,实习的情况不了解,大创项目连名字、背景、目的及意义都没体现出来;地摊经济更是看完连卖的什么产品都不知道,项目成果直接写营收多少都更直观真实一点;后面那个校文体部的更是工作内容是组织活动整理流程,成果变成了当志愿者,而且你们学校本科学生会大一入学就直接当部长吗,志愿里面还提到了疫情防控,全面解封是22年12月的事情,可能时间上也有冲突。可能你花了钱人家就用AI给你随便写了点内容改了一下,没什么体现个性化的点
点赞 评论 收藏
分享
搜索部&nbsp;首先说下timeline8.18,投递8.19,约一面8.21,晚上一面call约二面8.22,上午二面下午oc周末等待(8.23,8.24)8.25,offer一年前,我还是懵懵懂懂,高考完的暑假,只会提前学学高数,未来的画像是什么?我或许无法预测。开学后,自学Python,接单,无数个客户的ddl,偷偷摸摸一个人找自习的地方,这一步步竟然为后来的我,搭建工程能力的基础。大一上,我也要感谢我的第一位老板,让我接触到了实习,师兄带着我一步步入门,看他们写的飞书文档。大一下,导师带我参与企业项目,这让我渐渐发现,应该去实践,增长见识,而非局限当下,盯着自己的小新pro。不久后,第一波投递开始,结果当然是约面极少。盯着简历上的文字和ssob,我开始思考,确实很多可以去提升。带着些许不甘心,继续沉淀,慢慢的约面也越来越多,有的时候两天7场,准备完就接着下一个日程。这一次,也许是刚好到位吧,比较match,面试答的流利,关关难关关过,成为度孝子展望未来,依然是重重挑战,果然只有收到offer的那一刻是开心的。愿在百度星海拆解的每一段代码,都能成为丈量宇宙的诗行;此志终赴星河,而今迈步重铸天阶。屏幕前的你们,在无数个向星海奔赴的日夜,一定一定,会在未来化作群星回响的征程——请永远相信此刻埋首耕耘的自己!!!
一天三顿半:???百度提前批发 offer了?不是统一和正式批排序完再发吗我靠
百度求职进展汇总
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务