题意 给n次操作和一个数字k,每一次要么向集合中添加一个数字,要么删除一个数字。 求每次操作后,凑出k的方案数目 解法 设f[i][j]表示前i次操作,凑出g的方案数目 显然所有的 f[i][0]=0 增加一个数字x //从选这个数字和不选这个数字进行考虑 f[i][j]=f[i-1][j-x]+f[i-1][j] 删除一个数字x f[i][j]=f[i+1][j]+f[i+1][j-x] //移项后得到 f[i+1][j]=f[i][j]-f[i+1][j-x] //必须这么移动,因为f[i+1][0]=0,这样才可以推出来后面的 发现每一层只与上一层有关,所以状态压缩成1维即可