有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;
}
}