5,530
社区成员
发帖
与我相关
我的任务
分享
#include<bits/stdc++.h>
using namespace std;
int n,s,i,ans,k;
int t[31],a[31];int x=0;
void dfs(int i,int s)
{
if (i>n)
{
if (s==k)ans++;
return;
}
if (s+(n-i+1)*(2*a[i-1]-1-(n-i+1))/2>k || s+(n-i+1)*(2*a[i-1]+1+(n-i+1))/2<k)return;
a[i]=a[i-1]+1;
dfs(i+1,s+a[i]);
a[i]=a[i-1]-1;
dfs(i+1,s+a[i]);
}
int main()
{
ans=0;
cin>>n>>k;
a[1]=0;
dfs(2,0);
cout<<ans<<endl;
}