模版就直接貼**:
01揹包模板:
/*
01揹包問題
01揹包問題的特點是,">每種物品僅有一件。能夠選擇放或不放。
01揹包問題描寫敘述: 有n件物品和乙個容量為v的揹包。
第i件物品的重量是c[i],價值是w[i]。
求解將哪些物品裝入揹包可使這些物品的重量總和不超過揹包容量,且價值總和最大。 */ #include #define n 1050017 int max(int x,int y) int wei[n],val[n],f[n]; int main() printf("%d\n",f[m]); } return 0; } //此**為poj3624
全然揹包模板:
/*
全然揹包問題的特點是,每種物品能夠無限制的反覆使用。能夠選擇放或不放。
全然揹包問題描寫敘述:
有n物品和乙個容量為v的揹包。第i件物品的重量是wei[i],價值是val[i]。
*/#include #define inf 0x3fffffff
#define n 10047
int f[n],val[n],wei[n];
int min(int a,int b)
int main()
f[0]=0;//由於此處如果的是小豬儲錢罐 恰好裝滿 的情況
//注意初始化(要求恰好裝滿揹包,那麼在初始化時除了f[0]為0其他f[1..v]均設為-∞。
//這樣就能夠保證終於得到的f[n]是一種恰好裝滿揹包的最優解。
//如果並沒有要求必須把揹包裝滿。而是僅僅希望**盡量大,初始化時應該將f[0..v]所有設為0)
for(i =0 ; i < n ; i++)
}if(f[c] == inf)
printf("this is impossible.\n");
else
printf("the minimum amount of money in the piggy-bank is %d.\n",f[c]);
} return 0;
}//此**為hdu1114;
f[w] 即為所求
初始化分兩種情況:
1、假設揹包要求正好裝滿則初始化 f[0] = 0, f[1~w] = -inf;
2、假設不須要正好裝滿 f[0~v] = 0;
多重揹包模板:
//多重揹包(multiplepack): 有n種物品和乙個容量為v的揹包。
//第i種物品最多有n[i]件可用,每件費用是c[i],價值是w[i]。
//求解將哪些物品裝入揹包可使這些物品的費用總和不超過揹包容量,
//且價值總和最大。
//hdu 2191 #include #include #define n 247 int max(int a,int b) int main() for(i = 0 ; i < m ; i++) } } printf("%d\n",f[n]); } } return 0; } 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揹包 完全揹包 多重揹包模板
01揹包問題真的是最最基礎的,完全揹包就將01揹包的乙個迴圈順序顛倒了下,多重揹包就是在01揹包基礎上加了乙個迴圈。本文是在學習了 揹包九講 後的總結和實現,感謝大神寫的揹包指導。多重揹包可以用二進位制來表示,不過不是很理解,先貼出最簡單的轉化為01揹包 01揹包 includeusing name...