计蒜客--等和的分割子集

晓萌希望将 11 到 NN 的连续整数组成的集合划分成两个子集合,且保证每个集合的数字和是相等。例如,对于 N=3N=3,对应的集合 \{1,2,3\}{1,2,3} 能被划分成 \{3\}{3} 和 \{1,2\}{1,2} 两个子集合.

这两个子集合中元素分别的和是相等的。

对于 N=3N=3 ,我们只有一种划分方法,而对于 N=7N=7 时,我们将有 44 种划分的方案。

输入格式

输入包括一行,仅一个整数,表示 N(1 \le N \le 39)N(1N39)的值。

输出格式

输出包括一行,仅一个整数,晓萌可以划分对应 NN 的集合的方案的个数。当没法划分时,输出 00

样例输入

7

样例输出

4
用01背包的思想解决,开二维的dp,横坐标代表第i个数字,纵坐标j代表数字集合的和

计蒜客--等和的分割子集_第1张图片

#include
using namespace std;
long long dp[42][1005]={0};
int main()
{
	long long i,n,sum=0;
	cin>>n;
	sum=(1+n)*n/2;
	if(sum%2)//如果是奇数则直接输出0
	cout<<'0'<


你可能感兴趣的:(c++,DP,计蒜客)