题目:
http://codevs.cn/problem/1449/
虽然慢一点……
复杂度O(n*2^n);
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int f[100001];
int n,m;
void solve()
{
cin>>n;
m=1<<n,f[0]=1;
for(int i=1;i<m;i++)
for(int j=i;j>0;j-=(j&-j))
f[i]+=f[i&~(j&-j)];//f[i^(j&-j)]
cout<<f[m-1];
}
int main()
{
solve();
return 0;
}