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

動態(tài)規(guī)劃——01背包問題(C++實現(xiàn))

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

題目描述:

動態(tài)規(guī)劃——01背包問題(C++實現(xiàn))

解題思路:

整體思路:

利用動態(tài)規(guī)劃,其目的就是將原問題分解成幾個子問題,通過求解簡單的子問題,把原問題給解決,就比如斐波那契數(shù)列方程:
f[i]=f[i-1]+f[i-2];
動態(tài)規(guī)劃的核心就是找到原問題與子問題的關系,并列出動態(tài)轉(zhuǎn)移方程。

實現(xiàn)方法:

這里我們可以定義一個二維數(shù)組,dp[i][j]表示對于背包容量為j的背包,前i個物品的最優(yōu)解,即最大價值。
對于一個物品,可以分兩種情況:
不選:對于dp[i][j],不選第i個物品時,dp[i][j]的最優(yōu)解就是dp[i-1][j]的最優(yōu)解
選:如果選擇,我們就讓背包容量減去第i件的物品體積,讓dp加上物品價值,即dp[i][j]=dp[i-1][j-v[i]]+w[i];
這樣我們就得到了狀態(tài)轉(zhuǎn)移方程,如果要計算對于前N個物品背包容量為V的背包的最優(yōu)解,只需要一層一層往前推,通過前面的子問題,求得最終答案。

狀態(tài)轉(zhuǎn)移方程:

dp[i][j]=max(dp[i-1][j],dp[i-1][j-v[i]]+w[i]);

代碼和注釋:

#include <iostream>
using namespace std;
int dp[1010][1010];
int v[1010],w[1010];//體積和價值
int main(){
	int N,V;
	int i,j;
	//輸入數(shù)據(jù)
	cin>>N>>V;//商品個數(shù)和背包容量
	for(i=1;i<=N;i++)
	{
		cin>>v[i]>>w[i];//體積和價值
	}
	for(i=1;i<=N;i++)//依次遍歷從第1個物品到第N個物品
	{
		for(j=1;j<=V;j++)//依次遍歷從0~背包容量V
		{
			if(j<v[i])//如果背包容量小于物品體積
			{
				dp[i][j]=dp[i-1][j];//最優(yōu)解就是上一個物品時的最優(yōu)解
			}
			else//否則就是背包容量大于等于物品體積
			{
				dp[i][j]=max(dp[i-1][j],dp[i-1][j-v[i]]+w[i]);//拿或者不拿,選最優(yōu)
			}
		}
	}
	cout<<dp[N][V]<<endl;//輸出前N個商品,背包容量為V的最優(yōu)解
	return 0;
}


參考自:https://blog.csdn.net/q1411687596/article/details/104827473文章來源地址http://www.zghlxwxcb.cn/news/detail-512656.html

完結(jié),撒花撒花…

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

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

領支付寶紅包贊助服務器費用

相關文章

  • 【十七】【動態(tài)規(guī)劃】DP41 【模板】01背包、416. 分割等和子集、494. 目標和,三道題目深度解析

    【十七】【動態(tài)規(guī)劃】DP41 【模板】01背包、416. 分割等和子集、494. 目標和,三道題目深度解析

    動態(tài)規(guī)劃就像是解決問題的一種策略,它可以幫助我們更高效地找到問題的解決方案。這個策略的核心思想就是將問題分解為一系列的小問題,并將每個小問題的解保存起來。這樣,當我們需要解決原始問題的時候,我們就可以直接利用已經(jīng)計算好的小問題的解,而不需要重

    2024年02月03日
    瀏覽(25)
  • 動態(tài)規(guī)劃(01背包問題)

    動態(tài)規(guī)劃(01背包問題)

    本文默認讀者具有動態(tài)規(guī)劃前置知識 動態(tài)規(guī)劃的特點: 重疊子問題 狀態(tài)轉(zhuǎn)移方程 最優(yōu)子結(jié)構(gòu) 題型: 求最值 解題套路: 明確【狀態(tài)】 明確【選擇】 明確dp函數(shù)/數(shù)據(jù)的定義 明確base case 例:給你一個可裝載容量為W的背包和N個物品,每個物品有重量和價值兩個屬性。其中第

    2024年04月16日
    瀏覽(23)
  • 動態(tài)規(guī)劃:01背包問題(二)

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

    上篇博客動態(tài)規(guī)劃:01背包問題(一)將的是用二維數(shù)組來解決,而本篇博客就是把二維dp數(shù)組降為一維dp數(shù)組(滾動數(shù)組)在使用二維數(shù)組的時候,遞推公式:dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - weight[i]] + value[i]); 其實可以發(fā)現(xiàn)如果 把dp[i - 1]那一層拷貝到dp[i]上 ,表達式完全可以是

    2024年01月22日
    瀏覽(23)
  • 動態(tài)規(guī)劃-01背包問題

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

    算法思路: 背包問題的狀態(tài)表??常經(jīng)典,如果?家不知道怎么來的,就把它當成?個「模板」記住吧~ 我們先解決第?問: 1. 狀態(tài)表? : dp[i][j] 表?:從前 i 個物品中挑選,總體積「不超過」 j ,所有的選法中,能挑選出來 的最?價值。 2. 狀態(tài)轉(zhuǎn)移?程 : 線性 dp 狀態(tài)

    2024年04月11日
    瀏覽(36)
  • 動態(tài)規(guī)劃——01背包問題

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

    由于本人實力尚淺,接觸算法沒多久,寫這篇blog僅僅是想要提升自己對算法的理解,如果各位讀者發(fā)現(xiàn)什么錯誤,懇請指正,希望和大家一起進步。(●’?’●) 狀態(tài)表示 :用一個數(shù)組 f[][] (數(shù)組可能是一維也可能是二維,根據(jù)具體題目具體分析)來表示某個集合,這個集合

    2024年02月03日
    瀏覽(28)
  • 動態(tài)規(guī)劃01背包問題

    動態(tài)規(guī)劃01背包問題

    假設你是一名經(jīng)驗豐富的探險家,背著背包來到野外進行日常探險。天氣晴朗而不燥熱,山間的風夾雜著花香,正當你欣賞這世外桃源般的美景時,突然,你發(fā)現(xiàn)了一個洞穴,這個洞穴外表看起來其貌不揚,但憑借著驚為天人的直覺,這個洞穴不簡單。于是,你開始往洞穴內(nèi)

    2024年02月06日
    瀏覽(22)
  • 動態(tài)規(guī)劃_01背包問題

    描述 一個旅行者有一個最多能裝 ? M ? 公斤的背包,現(xiàn)在有 ? n ? 件物品,它們的重量分別是 ? W 1 ? , W 2 ? , ... , W n ? , 它們的價值分別為 ? C 1 ? , C 2 ? , ... , C n ? ,求旅行者能獲得最大總價值。 輸入描述 第 1 行:兩個整數(shù), M ? (背包容量, M ≤ 200 ? )和 ? N ?

    2024年04月29日
    瀏覽(18)
  • 【動態(tài)規(guī)劃】01背包問題

    【動態(tài)規(guī)劃】01背包問題

    動態(tài)規(guī)劃是一種非常常見的算法,不論是在我們平時刷題的過程中還是在競賽中,總會見到動態(tài)規(guī)劃的身影,而動態(tài)規(guī)劃又分為很多種,其中01背包問題是非常典型的一類動態(tài)規(guī)劃問題。如果大家之前沒有了解過動態(tài)規(guī)劃,建議大家先去學習學習動態(tài)規(guī)劃,直接開始01背包問題

    2024年04月15日
    瀏覽(18)
  • 算法系列--動態(tài)規(guī)劃--背包問題(1)--01背包介紹

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

    ??\\\"趁著年輕,做一些比較cool的事情\\\"?? 作者:Lvzi 文章主要內(nèi)容:算法系列–動態(tài)規(guī)劃–背包問題(1)–01背包介紹 大家好,今天為大家?guī)淼氖?算法系列--動態(tài)規(guī)劃--背包問題(1)--01背包介紹 背包問題是動態(tài)規(guī)劃中經(jīng)典的一類問題,經(jīng)常在筆試面試中出現(xiàn),是非常 具有區(qū)分度 的題

    2024年04月16日
    瀏覽(93)
  • 動態(tài)規(guī)劃母題:01背包問題

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

    動態(tài)規(guī)劃與圖論,前綴和與差分等有模板的算法不同,動態(tài)規(guī)劃更考察思維能力,而不是運用模板的能力。 個人認為 Acwing?關于動態(tài)規(guī)劃的講解比較容易理解。我會根據(jù) Acwing?的動態(tài)規(guī)劃解題思路來講解題目。 雖說動態(tài)規(guī)劃沒有固定的模板,但是還是有相對固定的套路。但

    2024年02月12日
    瀏覽(20)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領取紅包

二維碼2

領紅包