帆软笔试(后台开发工程师 2023/8/10)

编程题目两道(动态规划+数据库查询)

1、假设可以用一个字符串表示某植物的DNA,对该植物进行不同剂量辐射可以修改他的DNA值,从而培育出新的品种。

#其中:

插入一个DNA字符的时间消耗为x天

删除一个DNA字符的时间消耗为y天

替换一个DNA字符的时间消耗为z天

那么请设计一个函数,计算该植物品种A培育成品种B最快需要多少天,输入参数依次为:

字符串A,字符串B,正整数X,正整数y,正整数z

注意:用例中替换的代价有可能会高于插入删除之和,也可能小于插入删除之和。

样例1:

输入数据: virusA =“finereport”,virusB =“fanruan666”

x=2,y=4,z=5

期望输出: 36

ac代码:

#include <iostream>
#include <string>
#include <vector>

using namespace std;

int min(int a, int b, int c) {
    return min(a, min(b, c));
}

int solution(string virusA, string virusB, int x, int y, int z) {
    int m = virusA.size();
    int n = virusB.size();

    vector<vector<int>> dp(m + 1, vector<int>(n + 1));

    for (int i = 0; i <= m; ++i) {
        for (int j = 0; j <= n; ++j) {
            if (i == 0)
                dp[i][j] = j * x;
            else if (j == 0)
                dp[i][j] = i * y;
            else if (virusA[i - 1] == virusB[j - 1])
                dp[i][j] = dp[i - 1][j - 1];
            else
                dp[i][j] = min(dp[i - 1][j - 1] + z,
                               min(dp[i][j - 1] + x, dp[i - 1][j] + y));
        }
    }

    return dp[m][n];
}

int main() {
    string virusA = "finereport";
    string virusB = "fanruan666";
    int x = 2;
    int y = 4;
    int z = 5;

    int result = solution(virusA, virusB, x, y, z);
    cout << "Minimum days needed: " << result << endl;

    return 0;
}

2、编写一条 SQL,查找 test 表中重复 2 次及以上的车牌

id car

1 苏412345

2 苏A12346

3 苏412346

4 苏A12347

5 苏A12347

输出:

car

苏A12346

苏A12347

SELECT car
FROM test
GROUP BY car
HAVING COUNT(*) >= 2;

全部评论
题目都一样的,还有人没考啊,你这发出来别人直接cv了
1 回复 分享
发布于 2023-08-10 13:38 江苏
啥时候投的老哥
点赞 回复 分享
发布于 2023-08-10 12:38 辽宁

相关推荐

04-02 16:40
已编辑
昆明理工大学 算法工程师
先上数据&nbsp;投递&nbsp;32家&nbsp;2月下旬到3月上旬笔试&nbsp;做了15场&nbsp;含测评收到面试&nbsp;4家第一场笔试&nbsp;2月28日第一场面试&nbsp;3月15日笔面间隔&nbsp;15天具体经历2月底那周连着做了三场笔试&nbsp;拼多多&nbsp;美团&nbsp;携程&nbsp;一场接一场&nbsp;做完人都是麻的然后就开始了漫长的等待3月初那几天&nbsp;我每天刷牛客看别人笔试完多久约面&nbsp;有人说三天&nbsp;有人说一周&nbsp;我等到第五天&nbsp;邮箱除了广告啥也没有&nbsp;等到第七天&nbsp;开始怀疑是不是笔试挂了&nbsp;等到第十天&nbsp;已经做好全部石沉大海的准备了3月10号那天心态确实崩了一下&nbsp;15场笔试换不来一场面试&nbsp;说不怀疑自己是假的转折发生在3月15号下午两点我在图书馆刷题&nbsp;手机震了一下&nbsp;看了一眼&nbsp;邮件加短信&nbsp;某中厂&nbsp;做云的&nbsp;base北京&nbsp;约一面看到面试邀请四个字的时候&nbsp;我手抖了一下&nbsp;不是因为激动&nbsp;是等了太久&nbsp;突然来了反而不敢相信&nbsp;我把手机扣在桌上缓了十秒才拿起来仔细看然后3月16&nbsp;17&nbsp;18&nbsp;三天连着来了3家&nbsp;华为&nbsp;荣耀&nbsp;一个小厂&nbsp;就跟公交车似的&nbsp;等半天不来&nbsp;一来来一串笔面间隔时间线&nbsp;给大伙参考中厂A&nbsp;笔试完第5天约面华为&nbsp;笔试完第8天约面&nbsp;性格测评后第3天荣耀&nbsp;笔试完第11天约面小厂&nbsp;笔试完第3天约面一点经验第一&nbsp;笔试完别干等&nbsp;把错题啃透等面试那15天&nbsp;我把笔试做过的题全部过了一遍&nbsp;尤其是编程题没AC的&nbsp;不管是因为边界条件没处理好还是思路卡壳&nbsp;我都重新理了一遍&nbsp;在IDE里跑通才罢休&nbsp;后来面试真的有被问到&nbsp;笔试那道题你当时怎么想的&nbsp;现在有没有更好的解法&nbsp;如果不是提前复盘过&nbsp;现场肯定卡壳第二&nbsp;邮箱和短信都看&nbsp;别漏了我有一家的短信进了拦截&nbsp;邮件没提醒&nbsp;幸亏那几天心里不踏实&nbsp;每天手动翻一遍垃圾箱才发现&nbsp;那家后来面到了二面第三&nbsp;别跟别人比进度&nbsp;没有意义我室友投得比我晚&nbsp;面得比我早&nbsp;那几天看他准备面试我还在等&nbsp;确实难受&nbsp;但后来想明白了&nbsp;每个人投的岗位&nbsp;部门&nbsp;HC情况都不一样&nbsp;别人三天约面不代表你挂了&nbsp;我翻牛客去年的帖子&nbsp;有人笔试完两周才收到面试&nbsp;最后还是拿了offer第四&nbsp;笔试做多了真的有肌肉记忆15场笔试不是白做的&nbsp;到后面&nbsp;选择题的八股套路基本摸清了&nbsp;编程题的输入输出格式也不用反复试了&nbsp;每场能省出10到15分钟给难题&nbsp;最后拿到面试的那几家&nbsp;我推测笔试成绩应该都不差&nbsp;因为面试官在自我介绍时说了句&nbsp;你笔试成绩还不错第五&nbsp;记录每一场的笔试题我建了一个Excel&nbsp;每场笔试完立刻记下考了哪些知识点&nbsp;哪道题没做出来&nbsp;哪个题做得不顺&nbsp;15场记下来&nbsp;发现考得最多的就是动态规划&nbsp;二叉树&nbsp;哈希表&nbsp;后面我就重点刷这几类&nbsp;命中率确实高了转化率供参考15场笔试&nbsp;换&nbsp;4个面试&nbsp;转化率不到百分之27&nbsp;按这个比例&nbsp;如果你做了10场还没动静&nbsp;可能不是你不行&nbsp;是概率还没轮到你&nbsp;再投几家&nbsp;再做几场&nbsp;总会来的最后整理了一个笔试复盘模板&nbsp;需要自取公司名称:拼多多笔试日期:2月28日AC情况:2/3卡壳的题目:第三题动态规划卡壳原因:边界条件没处理好复盘后是否掌握:是祝我们都上!
做完笔试后你收到面试了吗...
点赞 评论 收藏
分享
评论
10
42
分享

创作者周榜

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