题解
仔细想一想就会发现这是一道dp,还是01背包类型的,是求方案数的。
看似是把数列分组,但是可视作把 N 个 重量分别为 1-N 的物体放入总重一定的背包中,且刚好放完的方案数计算。
递推式不难得出:
f[i+1][j] = f[i][j] if ( i > j)
= f[i][j]+f[i][j-i]
ps : 01pack中有很多不同的提问,比如求方案,最少物品数等等,递推式都会略有变化。
代码
#include <iostream>
#include <cstdio>
#include <fstream>
#include <cstring>
#include <cstdlib>
#include <cmath>
using namespace std;
int