招银科技9.5笔试

三个算法题,其中两个是填空形式。一个是编程,字符串变换的最小费用,不过没有自动的测试用例,只能自己输入

题目:
让字符串s1转换为s2,有三种操作分别为插入ic,删除dc,改变rc,分别对应不同的费用,求转换字符串的最小费用
例子:
s1:“abc”
s2:“adc”
ic = 3
dc = 5
rc = 99
这时候先删除b然后插入d费用最小,为8.

思路:二维dp ,dp[i][j]表示从s1前i个字符调整到s2前j个字符的费用

代码

int main(){
    /*  让字符串s1转换为s2,有三种操作分别为插入ic,删除dc,改变rc,分别对应不同的费用,求转换字符串的最小费用*/
    string s1 = "abc";
    string s2 = "adc";
    int ic = 3;
    int dc = 5;
    int rc = 99;
    int len1 = s1.size();
    int len2 = s2.size();
    vector<vector<int>> dp(len1+1,vector<int>(len2+1));//dp[i][j]表示从s1前i个字符调整到s2前j个字符的费用

    //源字符串为空
    for(int i=1;i<=len2;i++){
        dp[0][i] = i*ic;
    }
    //目标字符串为空
    for(int j = 1;j<=len1;j++){
        dp[j][0] = j*dc;
    }
    for(int i=0;i<len1;i++){
        for(int j=0;j<len2;j++){
            if(s1[i] == s2[j]){
                dp[i+1][j+1] = dp[i][j];
            }else{
                dp[i+1][j+1] = min(min(dp[i+1][j] + ic,dp[i][j+1] + dc),dp[i][j]+rc);
                //dp[i+1][j] + ic对应了s1先删除一个到 再插入一个的费用
                //dp[i][j+1] + dc对应了s1先插入一个到 再删除一个的费用
                //dp[i][j]+rc 对应了直接改变一个字符的费用
            }

        }
    }
    cout << dp[len1][len2];
    return 0;
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PowerPCB 9.5是一个电路板设计软件。它具有强大的功能,可以帮助用户轻松地创建和修改复杂的电路板设计。 PowerPCB 9.5的主要特点包括以下几个方面: 1. 用户友好的界面:PowerPCB 9.5具有直观的界面设计,使用户能够快速上手并进行电路板设计。它提供了一系列易于使用的工具和选项,方便用户进行布局和布线等操作。 2. 强大的设计功能:PowerPCB 9.5具有丰富的设计功能,能够满足用户对复杂电路板设计的各种需求。它支持多层电路板设计、自动布线、信号完整性分析等功能,能够帮助用户快速有效地完成设计任务。 3. 模块化设计:PowerPCB 9.5支持模块化设计,可以将复杂的电路板设计拆分为多个模块进行独立设计。这样可以提高设计效率,便于设计团队的分工合作。 4. 丰富的元件库:PowerPCB 9.5内置了丰富的元件库,包括常用的电子元件和封装。用户可以根据需要快速选择合适的元件,并进行布局和布线。 5. 与其他工具的集成:PowerPCB 9.5可以与其他常用的电子设计自动化工具进行集成,例如原理图设计软件和仿真工具等。这样可以在设计过程中实现更加全面的功能和效果。 总的来说,PowerPCB 9.5是一款功能强大的电路板设计软件,它可以帮助用户轻松地创建和修改复杂的电路板设计。它具有直观的界面设计、丰富的设计功能、模块化设计、丰富的元件库以及与其他工具的集成等特点,能够提高设计效率并满足不同用户的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值