• 背包问题的各种状态转移方程的总结


    dp[i][j]=max{dp[i-1][j-v[i]]+c[i],dp[i-1][j]};
    for(i=1;i<=n;i++){
    
                          for(j=v[i];j<=v;j++){//注意这里是从v[i]开始到V
    
                               if(j>=v[i])
    
                                  dp[j]=max{dp[j],dp[j-v[i]]+c[i]};
    
                          }
    
                  }
    dp[j]=max{dp[j],dp[j-v[i]]+c[i]};
    dp[i][j]=max{dp[i-1][v-k*v[i]]+k*c[i]|0<=k<=n[i]};(k表示第i种物品放入k件);
    for(i=1;i<=n;i++){
    
                        for(j=v;j>=0;j--){
    
                             for(k=1;k<=n[i];k++){
    
                                 if(j>=k*v[i])
    
                                    dp[i][j]=max(dp[i-1][v-k*v[i]]+k*c[i])
                             }
    
                        }
    f(4) = f(3) + f(2) + f(1);
    最长公共子序列:
    
     
    
    根据最长公共子序列问题的性质,我们可以规定dp[i][j]为字符串1的前i个字符和字符串2的前j个字符的最长公共子序列的长度,  由于下面涉及到i-1和j-1,那么这个时候我们一般从i=1和j=1开始到i<=len1, j<=len2。
    
                 1ch1[i-1] = ch2[j-1] ,那么dp[i][j]= dp[i-1][j-1] + 1;
      这个时候所有i=0或j=0的dp[i][j]= 00 ;                                                          i = 0或j= 0;
    
    就有          dp  =       dp[i][j] = dp[i-1][j-1] + 1;                          i > 0且j> 0 且ch1[i-1]= ch2[j-1];
    
                                    dp[i][j]= max {dp[i-1][j] , dp[i][j-1]};           i > 0且j> 0且ch1[i-1]!= ch2[j-1];
    3、最大子序列的和问题
    
    给定一个序列a1,a2..........an;
    
    求子序列的和最大问题dp[i]表示以ai结尾的子序列和,max为最大子序列和
    
    核心:
    
    1如果输入的数据全部为负数则最大值就是序列中的一个最大值
    
    2如果有正数
    
    for(i=1;i<=n;i++){
    
           dp[i]=dp[i-1]+ai;
    
           if(dp[i]<0)
    
              dp[i]=0;
    
           if(max<dp[i])
    
              max=dp[i];
    }
    2、最长上升或下降子序列
    
    给定一个序列a1,a2..........an;
    
    dp[i]表示以ai结尾的最长上升子序列长度(下降相反)
    
    核心代码:
    
    for(i=1;i<=n;i++){
    
           dp[i]=1;
    
           for(k=1;k<i;k++){
    
                if(ak<ai&&dp[i]<dp[k]+1)
    
                  dp[i]=dp[k]+1;
    
           }
    
    }
  • 相关阅读:
    Murano Weekly Meeting 2016.05.24
    Murano Weekly Meeting 2016.05.17
    Murano Weekly Meeting 2016.05.10
    python3.4 x86_64-linux-gnu-gcc Error
    初学makefile
    解决Spring JdbcTemplate调用queryForObject()方法结果集为空时报异常
    svn命令行使用
    jquery选中checkbox
    jstl core and jstl fn
    linux上的shutdown命令
  • 原文地址:https://www.cnblogs.com/z2529827226/p/11627625.html
Copyright © 2020-2023  润新知