算法与数据结构

哈希

哈希函数特性 确定性 不可逆性 压缩性  分散性
一个只对应一个哈希值
理论上只能根据哈希函数推出数据的哈希值而不能由哈希值推出原有数据

可以将庞大数据用一个标记表示

分散性即敏感性,原有数据一旦发生些微变化,所得到的哈希表就会完全改变

并查集

常用于求连通子图,求最小生成树的Kruskal算法,求最近公共祖先

1.初始化init

2.查询find

3.合并union

最小生成树

选择权值和最小的边集

Kruskal算法

将所有边按照权值顺序排列,直接选择从权值最小的边开始,依次形成无环路的权值最小边集。

Prim算法

从顶点出发,间接选择与顶点相连权值最小的边

从文本

动态规划之背包

背包问题

        定义数组之时,一定要首先初始化数组,不然大概率得出错误结果

01背包

         dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - volume[i]] + value[i]);

二维数组中,一行数据的产生计算是根据上一行旧数据的结果而来的,因此内层循环采用逆序

完全背包 

        dp[i][j] = max(dp[i - 1][j], dp[i][j - volume[i]] + value[i]);

二维数组中,一行数据的产生是根据本行的新数据计算的,因此内层循环采用顺序

终极体:

        dp[j] = max(dp[j], dp[j - volume[i]] + value[i]);

多重背包 

        dp[i][j] = max(dp[i - 1][j], dp[i][j - k*volume[i]] + k*value[i]);

二维费用背包

        dp[i][j] = max(dp[i - 1][j][k], dp[i][j - volume[i]][k-weight[i]] + value[i]);

终极体

       dp[j] = max(dp[j][k], dp[j - volume[i]][k-weight[i]] + value[i]);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值