zoukankan      html  css  js  c++  java
  • 8-10

    无聊时候写博客,说不定会找到一些趣味。敲打


    今年天讲了背包,我只看了一些原理的东西 01背包问题和完全背包问题

    感觉这些东西比前面讲的要难些


    今天看了别人的博客发现大牛真多,还有一个在那讲泰勒公式,把我佩服的真的是五体投地

    路漫漫其修远兮,吾将上下而求索。


    在这奉上链接,有兴趣可以看一下。

    点击打开链接


    还有就是以前不会做的题现在,再看就没那么难了。学习需要一个过程。


    然后还做了一些并查集的问题

    点击打开链接

    点击打开链接

    点击打开链接


    01背包 完全背包       模板

    //dp[102][10010];
    //10^6
    //dp[102][10010];   dp[i][j]  --- i(1-i)   j(容量)  价值   
    /*


    dp[i][j]   <--   dp[i-1][j] 
    dp[i][j]   <--   dp[i-1][j-w[i]]++p[i];


    */
    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    using namespace std;
    int dp[102][10010];
    int w[102];
    int p[102];
    int main(){
    int n,W;
    scanf("%d%d",&n,&W);
    for (int i=1;i<=n;i++)
    {
    scanf("%d%d",&w[i],&p[i]);
    }
    for (int i=0;i<=W;i++)
    dp[0][i]=0;
    for (int i=1;i<=n;i++){
    for (int j=0;j<w[i]&&j<W;j++)
    dp[i][j]=dp[i-1][j];
    for (int j=w[i];j<=W;j++){
    dp[i][j]=max(dp[i-1][j],dp[i-1][j-w[i]]+p[i]);
    // dp[i][j]   <--   dp[i-1][j] 
    // dp[i][j]   <--   dp[i-1][j-w[i]]++p[i];
    }
    }
    /*

    完全背包 
    dp[10010];


    for (int i=1;i<=n;i++)  i物品   


    0-W

    j

    j+w[i]  --- dp[j] 
     
    for (int j = w[i];j<=W;j++)
    dp[j] = max(dp[j],dp[j-w[i]]+p[i])
    // w[i] = 2; p[i]=2;
    // dp[2] = max(dp[2],dp[2-w[i]+p[i])---  2
    // dp[4] = max(dp[4],dp[4-w[i]+p[i])---  4

    01背包
    for (int i=1;i<=n;i++)
    for (int j = W;j>=w[i];j--)
    {
    dp[j] = max(dp[j],dp[j-w[i]]+p[i])

    // dp[4] = max(dp[4],dp[2]+p[i])---  2
    // dp[2] = max(dp[2],dp[2-w[i]]+p[i])---  2
    }
    */
    }



    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    using namespace std;
    int dp[102][10010];
    int w[102];
    int p[102];
    int main(){
    int n,W;
    scanf("%d%d",&n,&W);
    for (int i=1;i<=n;i++)
    {
    scanf("%d%d",&w[i],&p[i]);
    }
    memset(dp,0,sizeof(dp));
    for (int i=1;i<=n;i++){
    for (int j=0;j<w[i]&&j<W;j++)
    dp[i][j]=dp[i-1][j];
    for (int j=w[i];j<=W;j++){
    dp[i][j]=max(dp[i-1][j],dp[i-1][j-w[i]]+p[i]);
    // printf("%d  %d    %d   %d ",i,j,w[i],dp[i][j]);
    }
    }
    printf("%d ",dp[n][W]);
    return 0;
    }












    永远渴望,大智若愚(stay hungry, stay foolish)
  • 相关阅读:
    修复文件系统
    遗忘root密码,对密码进行重置
    grub引导程序破坏修复下
    模拟Grub引导故障上(配置文件损坏)
    模拟MBR故障修复
    RAID5 制作 (一个硬盘制作)
    RAID10 (硬盘制作)
    du,df区别
    07_软件的安装
    06_find-查找文件
  • 原文地址:https://www.cnblogs.com/h-hkai/p/7406505.html
Copyright © 2011-2022 走看看