描述:
乙個旅行者有乙個最多能裝 m 公斤的揹包,現有 n 件物品 ,它們的重量分別為 w1、w2……wn ,它們的價值分別為 c1、c2……cn ,求旅行者能獲得的最大總價值。
輸入:第一行:兩個整數,m(揹包容量)和 n(物品數量);
第二行至 n+1 行:每行兩個整數 wi、ci,表示每個物品的重量和價值。
#include#include#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
#define maxm 2001
#define maxn 301
intm,n;
intw[maxn],c[maxn];
intf[maxn][maxm];
inline
intread()
while
(isdigit(ls))
return kr*xs;
}int
main()
描述:設有 n 種物品,每種物品有乙個重量及乙個價值。但每種物品的數量是無限的,同時有乙個揹包,最大載重為 m ,今從 n 種物品中選取若干件(同一種物品可以多次選取)使其重量的和 ≤ m ,而價值的和為最大。
輸入:第一行:兩個整數,m(揹包容量)和 n (物品數量);
第二行至 n+1 行:每行兩個整數 wi、ci,表示每個物品的重量和價值。
#include#include#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
#define maxm 2001
#define maxn 301
intm,n;
intw[maxn],c[maxn];
intf[maxn][maxm];
inline
intread()
while
(isdigit(ls))
return kr*xs;
}int
main()
描述:有 n 種物品和乙個容量為 m 的揹包。每種物品都有各自的價值 wi 、重量 vi 、和能夠購買數量 si 。
輸入:第一行:兩個整數,n (物品種數)和 m(揹包容量);
第二行至 n+1 行:每行三個整數 vi、wi、si 表示每種物品的重量、價值和能夠購買的最大數量。
#include#include#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
#define maxn 6002
intv[maxn],w[maxn],s[maxn];
intf[maxn];
intn,m;
inline
intread()
while
(isdigit(ls))
return kr*xs;
}int
main()
printf(
"%d\n
",f[m]);
return0;
}
描述:乙個旅行者有乙個最多能裝 m 公斤的揹包,現有 n 件物品,它們的重量分別為 w1、w2……wn ,它們的價值分別為 c1、c2……cn 。有的物品只可以取一次(01揹包),有的物品可以取無限次(完全揹包),有的物品可以取的次數有乙個上限(多重揹包)。求解將那些物品裝入揹包可使這些物品的費用總和不超過揹包容量,且價值總和最大。
輸入:第一行:兩個整數, m (揹包容量)和 n (物品數量);
第二行至 n+1 行:每行三個整數 wi、ci、pi ,前兩個整數分別表示每個物品的重量、價值,第三個整數若為 0 ,則說明此物品可以購買無數件;若為其它數字,則為此物品可夠買的最多件數(pi)。
#include#include#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
#define maxn 6002
intw[maxn],c[maxn],p[maxn];
intf[maxn];
intn,m;
inline
intread()
while
(isdigit(ls))
return kr*xs;
}int
main()
else
//01揹包和多重揹包
printf(
"%d\n
",f[m]);
return0;
}
描述:有乙個揹包,容納的重量為 m 、體積為 v 。有 n 件物品,其質量為 wi、體積為 vi、價值為 ci 。求,在不超過揹包容納的最大重量和體積的情況下,所能夠獲得的最大價值。
輸入:第一行:三個整數, v(揹包容納的體積)、m(揹包容納的質量)、n(物品數量);
第二行至 n+1 行:每行三個整數 vi 、wi、ci ,分別表示物品的體積、重量和價值。
#include#include#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
#define maxn 1001
intm[maxn],v[maxn],c[maxn];
intf[maxn][maxn];
intn,v,m;
inline
intread()
while
(isdigit(ls))
return kr*xs;
}int
main()
描述:乙個旅行者有乙個最多能裝 m 公斤的揹包,現在有 n 件物品,它們的重量分別為 w1、w2……wn ,它們的價值分別為 c1、c2……cn 。這些物品被分為若干組,每組中的物品互相衝突,最多選一件。求解將那些物品裝入揹包可使這些物品的費用總和不超過揹包容量,且價值最大。
輸入:第一行:三個整數,m (揹包容量)、n (物品數量)和 t (最大組號);
第二行至 n+1 行:每行三個整數 wi 、ci 、p,表示每個物品的重量、數量和所屬組號。
#include#include#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
#define maxn 1001
intn,m,t;
intw[maxn],c[maxn];
inta[maxn][maxn];
intf[maxn];
inline
intread()
while
(isdigit(ls))
return kr*xs;
}int
main()
for(int k=1;k<=t;k++)
for(int j=m;j>=0;j--)
for(int i=1;i<=a[k][0];i++)
if(j>=w[a[k][i]])
printf(
"%d\n
",f[m]);
return0;
}
01揹包模板 完全揹包 and 多重揹包(模板)
模版就直接貼 01揹包模板 cpp view plain copy print?01揹包問題 01揹包問題的特點是,每種物品僅有一件,可以選擇放或不放。01揹包問題描述 有n件物品和乙個容量為v的揹包。第i件物品的重量是c i 價值是w i 求解將哪些物品裝入揹包可使這些物品的重量總和不超過揹包容量...
01揹包模板 完全揹包 and 多重揹包(模板)
01揹包模板 01揹包問題 01揹包問題的特點是,每種物品僅有一件,可以選擇放或不放。01揹包問題描述 有n件物品和乙個容量為v的揹包。第i件物品的重量是c i 價值是w i 求解將哪些物品裝入揹包可使這些物品的重量總和不超過揹包容量,且價值總和最大。include define n 1050017...
01揹包模板 全然揹包 and 多重揹包(模板)
模版就直接貼 01揹包模板 01揹包問題 01揹包問題的特點是,每種物品僅有一件。能夠選擇放或不放。01揹包問題描寫敘述 有n件物品和乙個容量為v的揹包。第i件物品的重量是c i 價值是w i 求解將哪些物品裝入揹包可使這些物品的重量總和不超過揹包容量,且價值總和最大。include define ...