description
小q手裡有n(n<=1000) 個硬幣,每枚硬幣有一定的金額(200=>x>=1)他想知道,用這些硬幣(每枚硬幣只能用一次,但可能會有等面值的用兩次) 能組成多少種不同的金額?
input
第一行 n,表示第二行一共有n個數字,第二行 表示n個數字
output
第一行 輸出 m, 表示可以組成多少種不同的金額第二行 按照從小到大的順序輸出所有的金額。 注意,每行的結尾,不要有空格,否則你的答案可能會被判錯。
sample input 1
21 2
sample output 1
31 2 3
sample input 2
21 1
sample output 2
21 201揹包的未裝滿的情況
**:
#include#include#include
#include
#include
#include
#include
#include
#include
#include
#define inf 0x3f3f3f3f
const
int maxn=1e5+5
;typedef
long
long
ll;using
namespace
std;
int a[maxn],dp[200005
];int
main()
for(int t=1;t<=sum;t++)
dp[0]=0
;
for(int t=1;t<=n;t++)
}int s[200005
];
int cnt=0
;
for(int t=1;t<=sum;t++)
}cout
for(int t=0;t)
else
}return0;
}
0 1揹包變形題
將乙個陣列分成兩部分,不要求兩部分所包含的元素個數相等,要求使得這兩個部分的和的差值最小。比如對於陣列,可以分成和,使得這兩部分的差值最小。這道題為什麼說是0 1揹包問題的變形呢,因為0 1揹包問題是每個蘋果裝或者不裝,使得能裝的總重量最重,這道題也類似,什麼時候兩個陣列的和的差值最小呢?當然是都為...
包子湊數 完全揹包
小明幾乎每天早晨都會在一家包子鋪吃早餐。他發現這家包子鋪有n種蒸籠,其中第i種蒸籠恰好能放ai個包子。每種蒸籠都有非常多籠,可以認為是無限籠。每當有顧客想買x個包子,賣包子的大叔就會迅速選出若干籠包子來,使得這若干籠中恰好一共有x個包子。比如一共有3種蒸籠,分別能放3 4和5個包子。當顧客想買11個...
揹包 01揹包
01揹包 有n種物品與承重為m的揹包。每種物品只有一件,每個物品都有對應的重量weight i 與價值value i 求解如何裝包使得價值最大。dp i,v 表示前i個物體 包括第i個 面對容量為v的揹包的最大價值,c i 代表物體i的重量,w i 代表物體i的價值 如果第i個物體不放入揹包,則揹包...