百度10.15笔试b卷答案分享

第一题:题目忘了跳过,总之挺简单的
第二题:是一个数学规律题,在草稿纸上跟着流程做一遍就可以发现规律。
第三题:因为数据量很小,我懒得优化,直接暴力dfs求解,最后用set去重
全部评论
第三题思路差不多,但是我没A出来😂
点赞 回复 分享
发布于 10-15 21:16 江苏
第二题不会超时么,遍历直接说超时了
点赞 回复 分享
发布于 10-15 21:34 江西
太牛了佬
点赞 回复 分享
发布于 10-15 21:52 浙江

相关推荐

10-15 21:11
厦门大学 Java
百度麻将笔试 10.15 题解后端卷第一题 贪心n选k 如果选择的数的下一个数没被选,积分+1所以最后一个数一定能拿一分,而在 n/2的转折处1 (2) 3 (4) 5 (6)(n = 6, k = 3) 可以拿三分k = 4 时(1) (2) 3 (4) 5 (6) 仍然可以拿三分,也就是选择了这个1 不会得分但也不会丢分然后注意数字范围取long long while(t --){        long long int n;        long long int k;        cin>>n>>k;        //n个数里最多可以得n/2 ……        //1 - n里假如 n 是奇数 1,2,3可以选2两个数        //假如是偶数那可以选        long long int res = 0;        if(n % 2 == 1) res = n/2 + 1;        else res = n/2;        //到这里是最多能拿多少分,之后每选一个还得扣        if(k <= res) cout<<k<<endl;        else{            long long int tmp = n + 1;            cout<<tmp - k << endl;        }    }第二题 约瑟夫环问题注意到每一次选择一个数,都能确定下来结果的一位数比如 1 2 3 4第一次1到队尾,我们就能确定2是结果里的第一位,并且每一次都能确定下来一位所以本质是约瑟夫环问题代码就不放了,我是用队列模拟的第三题 麻将想了半天dp想不出来,那就搜索一下试试,刚好过了——————//dp想破头想不出来//试一下搜索//广度优先搜索//每一轮找刻子或者顺子//然后四轮后找雀头//找得到就res ++//数据量应该支持//哈希表记录一下stringunordered_set<string> uset;void dfs(vector<int> &v,int round){    if(round == 4){        for(int i = 0;i<v.size();i++){            if(v[i] >= 2){                v[i] -=2;                string tmp;                for(int j = 0;j < v.size();j++){                    tmp.push_back(v[j] + '0');                    tmp.push_back(j + '0');                }                v[i] += 2;                uset.insert(tmp);            }        }        return;    }    //dfs    //先搜刻子,再搜顺子    for(int i = 0;i<v.size();i++){        if(v[i] >= 3){            v[i] -= 3;            dfs(v, round + 1);            v[i] += 3;        }    }    for(int i = 1;i < v.size()-1;i++){        if(v[i-1] >= 1 && v[i] >= 1 && v[i + 1] >= 1){            v[i - 1] --;            v[i] --;            v[i + 1] --;            dfs(v,round + 1);            v[i - 1] ++;            v[i] ++;            v[i + 1] ++;        }    }}int main() {    int n;    cin>>n;    if(n <= 3) cout<<0;    else{        vector<int> vo(n);        fill(vo.begin(),vo.end(),4);        dfs(vo, 0);        cout<<uset.size()<<endl;    }    }
投递百度等公司10个岗位
点赞 评论 收藏
分享
2 5 评论
分享
牛客网
牛客企业服务