360公司2020秋招技术综合卷 2019.08.31

360公司2020秋招技术综合卷 2019.08.31_第1张图片
360公司2020秋招技术综合卷 2019.08.31_第2张图片
注:图片来源于网络。

针对每个起点,进行dfs深搜,考虑往左走和往右走两种情况,如果满足条件,则将终点位置保存在res中。

#include
#include
#include
#include
using namespace std;

void dfs(const int& n, vector<int>& dist, int pos, int t, set<int>& res) {
    if (pos > n || pos < 1)
        return;

    if (t == dist.size()) {
        res.insert(pos);
        return;
    }

    dfs(n, dist, pos - dist[t], t + 1, res);
    dfs(n, dist, pos + dist[t], t + 1, res);

    return;
}

int main()
{
    int n, m;
    cin >> n >> m;
    vector<int> dist(m);
    for (int i = 0; i < m; ++i)
        cin >> dist[i];

    set<int> res;
    for (int i = 1; i <= n; ++i) {
        dfs(n, dist, i, 0, res);
    }
    int ans = res.size();
    cout <<  ans << endl;
    return 0;
}

360公司2020秋招技术综合卷 2019.08.31_第3张图片
只考虑单个字符,出现次数最多的即为最终的结果…

你可能感兴趣的:(笔试)