国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

動態(tài)規(guī)劃:完全背包問題

這篇具有很好參考價值的文章主要介紹了動態(tài)規(guī)劃:完全背包問題。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

ACwing #3. 完全背包問題

動態(tài)規(guī)劃:完全背包問題

完全背包問題和01背包問題很相似。
01背包問題每個物品只能選一個,而完全背包問題每個物品可以選無限次。

DP問題的關(guān)鍵是找到狀態(tài)轉(zhuǎn)移方程:

①定義f[i][j]表示從前 i 個物品中選擇,體積為 j 的時候的最大價值。
②那么轉(zhuǎn)移方程f[i][j] = max(f[i - 1][j],f[i - 1][j - v[i]],f[i - 1][j - 2 * v[i]],.....,f[i - 1][j - k * v[i]],....)

因此代碼就是:

#include<iostream>
using namespace std;
const int N = 1010;
int f[N][N];
int v[N],w[N];
int main()
{
    int n,m;
    cin>>n>>m;
    for(int i = 1 ; i <= n ;i ++)
    {
        scanf("%d%d",&v[i],&w[i]);
    }

    for(int i = 1 ; i<=n ;i++)
    for(int j = 1 ; j<=m ;j++)
    {
        for(int k = 0 ; k*v[i]<=j ; k++)
            f[i][j] = max(f[i][j],f[i-1][j-k*v[i]]+k*w[i]);
    }

    printf("%d",f[n][m]
    return 0;
}

由于數(shù)據(jù)量級的原因,此代碼肯定會發(fā)生TLE,因此需要進(jìn)行優(yōu)化。

f[i , j ] = max( f[i-1,j] , f[i- 1,j - v[i]+ w[i] , ?f[i - 1,j-2 * v[i]]+2 * w[i] , f[i -1,j - 3 * v[i]]+3 * w[i] , .....)
f[i , j - v[i]]= max( ? ? ? f[i - 1,j - v[i]] ,? ? ? ? ?f[i - 1,j - 2 * v[i]] + w[i]?, f[i - 1,j- 3 * v[i]]+2 * w[i]?, .....)

由上兩式,可得出如下遞推關(guān)系:?
? ? ? ? ? ? ? ? ? ? ? ? f[i][j]=max(f[i, j - v[i] ] + w[i] , f[i - 1][j])??

因此優(yōu)化后的代碼變?yōu)椋?/p>

#include <iostream>
using namespace std;
const int N=1010;
int v[N],w[N],f[N][N];
int n,m;

int main()
{
  scanf("%d%d",&n,&m);
  
  for(int i = 1;i <= n;i++){
      scanf("%d%d",&v[i],&w[i]);
  } 
  for(int i = 1;i <= n;i++)
    for(int j = 1;j <= m;j++){
      f[i][j] = f[i - 1][j];
      if(j >= v[i])
        f[i][j] = max(f[i][j],f[i][j - v[i]] + w[i]);
    }
    
  printf("%d",f[n][m]);
  return 0;
}

? ? ? ? 可以看出代碼與01背包非常相似,因此嘗試能否做進(jìn)一步優(yōu)化。

優(yōu)化完成后的狀態(tài)轉(zhuǎn)移方程:f[j] = max(f[j], f[j - v[i]] + w[i])?

代碼如下:文章來源地址http://www.zghlxwxcb.cn/news/detail-418149.html

#include <iostream>
using namespace std;

const int N=1010;
int v[N],w[N],f[N];
int n,m;

int main()
{
  scanf("%d%d",&n,&m);  
  for(int i = 1;i <= n;i++){
      scanf("%d%d",&v[i],&w[i]);
  } 
  for(int i=1;i<=n;i++)
    for(int j=v[i];j<=m;j++){
        f[j]=max(f[j],f[j-v[i]]+w[i]);
    }    
  printf("%d",f[m]);  
  return 0;
}

到了這里,關(guān)于動態(tài)規(guī)劃:完全背包問題的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 動態(tài)規(guī)劃之背包問題——完全背包

    算法相關(guān)數(shù)據(jù)結(jié)構(gòu)總結(jié): 序號 數(shù)據(jù)結(jié)構(gòu) 文章 1 動態(tài)規(guī)劃 動態(tài)規(guī)劃之背包問題——01背包 動態(tài)規(guī)劃之背包問題——完全背包 動態(tài)規(guī)劃之打家劫舍系列問題 動態(tài)規(guī)劃之股票買賣系列問題 動態(tài)規(guī)劃之子序列問題 算法(Java)——動態(tài)規(guī)劃 2 數(shù)組 算法分析之?dāng)?shù)組問題 3 鏈表 算法

    2024年02月03日
    瀏覽(27)
  • 【算法|動態(tài)規(guī)劃 | 01背包問題No.2】AcWing 423. 采藥

    【算法|動態(tài)規(guī)劃 | 01背包問題No.2】AcWing 423. 采藥

    個人主頁:兜里有顆棉花糖 歡迎 點贊?? 收藏? 留言? 加關(guān)注??本文由 兜里有顆棉花糖 原創(chuàng) 收錄于專欄【手撕算法系列專欄】【AcWing算法提高學(xué)習(xí)專欄】 ??本專欄旨在提高自己算法能力的同時,記錄一下自己的學(xué)習(xí)過程,希望對大家有所幫助 ??希望我們一起努力、成

    2024年02月06日
    瀏覽(93)
  • 【動態(tài)規(guī)劃之完全背包問題】完全背包問題的通用解法與優(yōu)化

    【動態(tài)規(guī)劃之完全背包問題】完全背包問題的通用解法與優(yōu)化

    ?? 前面的話 ?? 本篇文章將介紹動態(tài)規(guī)劃中的背包問題——完全背包問題,前面我們已經(jīng)介紹了0-1背包問題,其實完全背包問題就只改了0-1背包問題的一個條件,即物品可選擇次數(shù)由一次改為無數(shù)次,僅此而已,下面我們就來開始介紹完全背包問題。 ??博客主頁:未見

    2023年04月22日
    瀏覽(115)
  • 動態(tài)規(guī)劃——完全背包問題

    動態(tài)規(guī)劃——完全背包問題

    由于本人實力尚淺,接觸算法沒多久,寫這篇blog僅僅是想要提升自己對算法的理解,如果各位讀者發(fā)現(xiàn)什么錯誤,懇請指正,希望和大家一起進(jìn)步。(●’?’●) 了解完全背包問題前可以先去看看01背包問題(良心正解),先了解這個基礎(chǔ)問題會更有利于你了解下面的完全背

    2024年02月04日
    瀏覽(29)
  • 動態(tài)規(guī)劃:完全背包問題

    動態(tài)規(guī)劃:完全背包問題

    ACwing #3. 完全背包問題 完全背包問題和01背包問題很相似。 01背包問題每個物品只能選一個,而完全背包問題每個物品可以選無限次。 DP問題的關(guān)鍵是找到狀態(tài)轉(zhuǎn)移方程: ①定義f[i][j]表示從前 i 個物品中選擇,體積為 j 的時候的最大價值。 ②那么轉(zhuǎn)移方程f[i][j] = max(f[i - 1][j

    2023年04月19日
    瀏覽(25)
  • 算法系列--動態(tài)規(guī)劃--背包問題(3)--完全背包介紹

    算法系列--動態(tài)規(guī)劃--背包問題(3)--完全背包介紹

    ??\\\"Su7\\\"?? 作者:Lvzi 文章主要內(nèi)容:算法系列–動態(tài)規(guī)劃–背包問題(3)–完全背包介紹 大家好,今天為大家?guī)淼氖?算法系列--動態(tài)規(guī)劃--背包問題(3)--完全背包介紹 鏈接: 完全背包 可以發(fā)現(xiàn)完全背包問題和01背包問題還是特比相似的 分析: 完全背包問題 是 01背包問題 的推廣

    2024年04月25日
    瀏覽(28)
  • 動態(tài)規(guī)劃完全背包問題-java

    動態(tài)規(guī)劃完全背包問題-java

    完全背包問題跟01背包問題思路大致一樣,只不過對于物品的拿取次數(shù)不在限制,我們只需要考慮這點即可。 文章目錄 前言 一、什么是完全背包問題? 二、問題模擬 1.樣例數(shù)據(jù) 2.算法思路 三、代碼如下 1.代碼如下(示例): 2.讀入數(shù) 3.代碼運行結(jié)果 總結(jié) 完全背包問題跟

    2024年04月26日
    瀏覽(24)
  • 動態(tài)規(guī)劃-----背包類問題(0-1背包與完全背包)詳解

    動態(tài)規(guī)劃-----背包類問題(0-1背包與完全背包)詳解

    目錄 什么是背包問題? 動態(tài)規(guī)劃問題的一般解決辦法: 0-1背包問題: 0 - 1背包類問題? 分割等和子集:? 完全背包問題:? 完全背包類問題 零錢兌換II: 背包問題(Knapsack problem)是一種組合優(yōu)化的NP完全問題。 問題可以描述為:給定一組物品,每種物品都有自己的重量和價格

    2024年04月17日
    瀏覽(29)
  • 三十八、動態(tài)規(guī)劃——背包問題( 01 背包 + 完全背包 + 多重背包 + 分組背包 + 優(yōu)化)

    三十八、動態(tài)規(guī)劃——背包問題( 01 背包 + 完全背包 + 多重背包 + 分組背包 + 優(yōu)化)

    0 1 背包問題: 條件:N 個物品容量為 V 的背包,每件物品最多用 1 次,其中物品信息體積為 Vi,價值為 Wi。 目標(biāo):選出物品,使價值最大(不一定裝滿背包)。 特點:每件物品 最多只用 1 次 完全背包問題: 特點:每一件物品都有 無限個 多重背包問題: 特點:每個物品

    2024年02月07日
    瀏覽(24)
  • 動態(tài)規(guī)劃:完全背包問題----中專生刷算法

    動態(tài)規(guī)劃:完全背包問題----中專生刷算法

    需要基礎(chǔ):閆氏dp分析法,01背包問題 先去看一下01背包問題,再看完全背包 動態(tài)規(guī)劃:選擇dp及優(yōu)化01背包問題-CSDN博客 做過01背包問題的同學(xué)會發(fā)現(xiàn),完全背包問題的代碼 在01背包基礎(chǔ)上改動很小,但是里面的思想,有很大差距 題目 有 N 種物品和一個容量是 V的背包,每種物品

    2024年04月16日
    瀏覽(36)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包