编程题目两道(动态规划+数据库查询)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期望输出: 36ac代码:#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 car1 苏4123452 苏A123463 苏4123464 苏A12347 5 苏A12347输出:car苏A12346苏A12347SELECT carFROM testGROUP BY carHAVING COUNT(*) >= 2;
点赞 10
评论 2
全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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