for (int i = 1; i <= n; i++)//前i个数
{
for (int j = sum; j >= i; j--)//和为j
{
dp[j] += dp[j - i];
}
}
cout << dp[sum]/2;
一维的处理
for (int i = 2; i <= n; i++)
{
for (int j = 0; j <= sum; j++)
{
if (j > i)
{
dp[i][j] = dp[i - 1][j - i] + dp[i - 1][j];
}
else
{
dp[i][j] = dp[i - 1][j];
}
}
}
cout << dp[n][sum];
二维的处理