大疆 8.6 软开B卷

大疆 先贴代码,题目在后面

第一题  爱玩游戏的小J  简单的背包问题

#include <iostream>
#include <vector>
using namespace std;
int main(){
    int T;
    cin >> T;
    for(int i=0; i<T; i++){
        int N, X;
        cin >> N >> X;
        vector<int> dp(X+1, 0);
        vector<int> val(N, 0);
        vector<int> tim(N, 0);
        for(int i=0; i<N; i++){
            cin >> val[i] >> tim[i];
            for(int j=X; j>=0 && j>= tim[i]; j--)
                dp[j] = max(dp[j], dp[j-tim[i]] + val[i]); 
        }
        cout << dp[X] << endl;
    }
    return 0;
}

第二题 不听话的机器人  直接hashMap即可

#include <iostream>
#include <vector>
#include <unordered_map>
using namespace std;
int main(){
    int N, M;
    while(cin >> N >> M){
        unordered_map<string, string> hashMap;
        for(int i=0; i<N; i++){
            string str1, str2;
            cin >> str1 >> str2;
            hashMap[str1] = str2;
        }

        for(int i=0; i<M; i++){
            string str;
            cin >> str;
            cout << hashMap[str] << endl;
        }
    }
    return 0;
}

第三题  应该怎么吃呢

暴力递归,过了 50%
不过直接输出 1,也是 50% 手动捂脸

#include <iostream>
#include <vector>
#include <algorithm> 
using namespace std;

int mode = 1e9+7;

void dfs(vector<int> &arr, int &res, int val, int st, int last){
    if(val == 0) {
        res = (res+1) % mode;
        return ;
    }
    if(val < 0 || st >= arr.size()) return ;

    for(int i=min(last-1, val/arr[st]); i>=0; i--)
        dfs(arr, res, val-arr[st]*i, st+1, i);

}

int main(){
    int V, N, M;
    while(cin >> V >> N){
        // 每件物品的价值
        vector<int> arr(N);
        // 喜爱程度,越小越喜爱
        vector<int> brr(N, N);
        for(int i=0; i<N; i++)
            cin >> arr[i];

        cin >> M;
        for(int i=0; i<M; i++){
            int tem;
            cin >> tem;
            brr[tem-1] = i;
        }
        sort(arr.begin(), arr.end(), [&](int a, int b){ 
            return brr[a] < brr[b]; });

        int res = 0;
        dfs(arr, res, V, 0, V);
        cout << res << endl;

    }
    return 0;
}
#大疆##笔试题目#
全部评论
感谢老哥
点赞 回复
分享
发布于 2019-08-06 22:20
我靠  秀啊  东大第一***
点赞 回复
分享
发布于 2019-08-06 22:24
滴滴
校招火热招聘中
官网直投
谢谢老哥,自己太菜了,连输入输出都没搞懂。
点赞 回复
分享
发布于 2019-08-06 22:36
请问第三题dfs里面if(val = arr.size()) return ;是什么意思?
点赞 回复
分享
发布于 2019-08-06 22:59
第二题你的hashmap定义是不是不完整?
点赞 回复
分享
发布于 2019-08-06 23:48
今天上午还想看下背包,一会就忘了,晚上报应就到了,考背包吗。。 。只打印了20过了50%
点赞 回复
分享
发布于 2019-08-07 00:18

相关推荐

头像
04-09 14:29
Java
点赞 评论 收藏
转发
11 63 评论
分享
牛客网
牛客企业服务