10.12考试总结

10.12考试总结

硬币找零

真·水题。连我都会做的DP......实际上就是背包问题,一个物品可以被用无数次,然后找要求的最小值,找不到找最近的数据

所以直接找啊

for (int i=1; i<=n; ++i)
    for (int j=a[i]; j<=t; ++j)
        f[j] = min(f[j], f[j-a[i]]+1);

就是不断枚举当前硬币面值得大小,一直找组成当前面子j的最小方案

物品装箱问题

照样是一个比较简单的背包问题当然我要是没有做对就不会说这种话来,想到了转移方程就超级简单系列所以说01背包转移方程看起来我是没有做过难题

for (int i=1; i<=n; ++i)
    for (int j=tot; j>=0; --j)
    {
        if (aw[i] <= j)
            f[j] = max(f[j], f[j-aw[i]] + av[i]);
        if (bw[i] <= j)
            f[j] = max(f[j], f[j-bw[i]] + bv[i]);
    }

因为是两种方案,所以都要考虑一边,找最大值

编辑距离

这个题目就选学起来了,考试的时候想不到怎么用数组模拟替换,删除的过程.......

实际上暴力更改就好了

如果一样就直接继承上一次的\[f[i][j]=f[i-1][j]+1\] 如果不一样就模拟删除,替换的操作就可以了

for (int i=1; i<=lena; ++i)
        for (int j=1; j<=lenb; ++j)
        {
            if (a[i-1] == b[j-1]) f[i][j] = f[i-1][j-1];
            else f[i][j] = min(f[i-1][j-1], min(f[i-1][j], f[i][j-1])) + 1;
        }

模拟完了,但是要注意边界问题。就是所谓的极限情况

关键子工程

拓扑排序.....最后还是学了这个东西。才发现好简单

但是机房停电.......代码丢没了,脾气突然暴躁起来

本身就是一个裸的拓扑所以掌握了拓扑就还好了.....

转载于:https://www.cnblogs.com/rendex/p/9791697.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值