有n個桶,每個桶裏有a[i]個硬幣,不能同時取相鄰兩個桶裏的硬幣,一個桶裏的硬幣要麼取完,要麼不取,揹包容量爲num,也就是最多取num個硬幣。
輸出最多能取多少個硬幣
範圍:1<=n<=10000, 1<=a[i]<=1000,0<=num<=1000
bool dp[1005][2];
dp[0][0]=true;
for(int i=1;i<=n;i++){
for(int j=num;j>=0;j--){
dp[j][0]=dp[j][0]|dp[j][1]
if(j>=a[i])
dp[j][1]=dp[j-a[i]][0]
}
}
for(int i=num;i>=0;i--){
if(dp[i][0]||dp[i][1]){
printf("%d\n",i);break;
}
}