平安科技历年秋招笔试真题

如需获取完整资料,请点击下方链接领取《2024校招笔试真题秘籍》(实时更新中)

不收费,3人组团即可一块免费领取!限量免费10000个名额

手机端点击免费领取:https://www.nowcoder.com/link/campus_xzbs2

电脑端请扫码领取:

1、鸡蛋掉落

【题目描述】你有 K 个鸡蛋,并可以使用一栋从 1 到 N 共有 N 层楼的建筑。每个蛋的功能都是一样的,如果一个蛋碎了,你就不能再把它掉下去。你知道存在楼层 F ,满足 0 <= F <= N 任何从高于 F 的楼层落下的鸡蛋都会碎,从 F 楼层或比它低的楼层落下的鸡蛋都不会破。每次移动,你可以取一个鸡蛋(如果你有完整的鸡蛋)并把它从任一楼层 X 扔下(满足 1 <= X <= N)。你的目标是确切地知道 F 的值是多少。无论 F 的初始值如何,你确定 F 的值的最小移动次数是多少?输入描述:输入两个数,(第一个数为K,第二个数为N)输出描述:返回最小移动次数输入样例:

1,2输出样例:

2

【解题思路】

动态规划

dp[k][n]表示k个鸡蛋n层楼至少要试几次。

枚举丢的楼层i,则dp[k][n] = min(dp[k][n-i], dp[k-1][i-1]) (对应没碎与碎)

 

【参考代码】

#include <bits/stdc++.h>
using namespace std;
const int N = 100 + 5;
const int inf = 0x3f3f3f3f;
int n, k;
int dp[N][N];
int dfs(int k, int n) {
    if(k == 1) {
        return n;
    }
    if(n <= 1) {
        return 0;
    }
    int &ans = dp[k][n];
    if(~ans) return ans;
    ans = inf;
    for(int i = 1; i <= n; ++i) {
        int tmp = min(dfs(k, n-i), dfs(k-1, i-1)) + 1;
        ans = min(ans, tmp);
    }
    return ans;
}

int main() {
    scanf("%d%d", &k, &n);
    memset(dp, -1, sizeof(dp));
    printf("%d\n", dfs(k, n));
    return 0;
}

2、水壶问题

【题目描述】有两个容量分别为 x升和y升的水壶以及无限多的水。请判断能否通过使用这两个水壶,从而可以得到恰好z升的水?如果可以,最后请用以上水壶中的一或两个来盛放取得的z升水。

你允许进行以下三种操作:

1.装满任意一个水壶

2.清空任意一个水壶

3.从一个水壶向另外一个水壶倒水,直到装满或者倒空

输入描述:

三个数

输出描述:

布尔格式True/False

输入样例:

3,4,5

输出样例:

True

【解题思路】

dfs,枚举所有的操作。

 

【参考

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

2024软件笔试真题+答案合集 文章被收录于专栏

本专刊由牛客官方团队打造,主要讲解名企校招技术岗位的笔试题,内容中包含多个名企的笔试真题,附有题目思路及参考代码

全部评论

相关推荐

努力学习的小绵羊:我反倒觉得这种挺好的,给不到我想要的就别浪费大家时间了
点赞 评论 收藏
分享
美丽的查理斯不讲武德:包kpi的啊,感觉虾皮一点hc都没有
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务