点击查看代码
#include<bits/stdc++.h>
using namespace std;
int n,m;
long long f[10][1024][100];
int v[1024];
void init()
{
for(int i=1;i<1<<n;++i)
{
int c=0;
for(int j=i;j;j=j&(j-1)) c++;
v[i]=c;
}
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cin>>n>>m;
init();
f[0][0][0]=1;
for(int i=1;i<=n;++i)
for(int j=0;j<1<<n;++j)
for(int k=0;k<=m;++k)
if(f[i-1][j][k])
for(int l=0;l<1<<n;++l)
if(!(l&j)&&!(l<<1&j)&&!(l>>1&j)&&!(l<<1&l))
f[i][l][k+v[l]]+=f[i-1][j][k];
long long res=0;
for(int i=0;i<1<<n;++i) res+=f[n][i][m];
cout<<res<<'\n';
}