蓝桥杯 2019 糖果(01背包问题的状态压缩)

采用了滚动数组的方法。

状态转移:把第i,i+1,i+2的糖果装到 j的背包后,现有背包的糖果为j|a[i]。

#include
using namespace std;

int n,m,k,temp;
int a[25],d[1<<21];

const int inf=0x3f3f3f3f;



int main(){
	int target=0;
	scanf("%d %d %d",&n,&m,&k);
	memset(d,0x3f,sizeof(d));
	for(int i=0;i=inf)
	printf("-1");
	else
	printf("%d\n",d[(1<

 

你可能感兴趣的:(动态规划)