看懂題意後 立馬想到dfs 之後隨手寫了一個dfs TLE 看了下人家寫的才知道是揹包
/*
ID: your_id_here
PROG: subset
LANG: C++
*/
#include <iostream>
#include<cstdio>
#include<cstring>
#include<stdlib.h>
#include<algorithm>
using namespace std;
int s,sum,n;
long long f[50][50];
int main()
{
freopen("subset.in","r",stdin);
freopen("subset.out","w",stdout);
int i,j;
cin>>n;
s = (n+1)*n/2;
if(s%2!=0)
{
cout<<"0\n";
}
else
{
s/=2;
f[1][0] = 1;
f[1][1] = 1;
for(i = 2; i <= n ; i++)
for(j = s; j >= 0 ; j--)
{
if(j>=i)
f[i][j] = f[i-1][j]+f[i-1][j-i];
else
f[i][j] = f[i-1][j];
}
cout<<f[n][s]/2<<endl;
}
fclose(stdin);
fclose(stdout);
return 0;
}