#include<bits/stdc++.h>
using namespace std;
long long n,sum,i, a[15], ans, f[5005];
int t[12][12]={{1},{1,1},{1,2,1},{1,3,3,1},{1,4,6,4,1},{1,5,10,10,5,1},{1,6,15,20,15,6,1},{1,7,21,35,35,21,7,1},{1,8,28,56,70,56,28,8,1},{1,9,36,84,126,126,84,36,9,1},{1,10,45,120,210,252,210,120,45,10,1},{1,11,55,165,330,462,462,330,165,55,11,1}};
int dfs(int i)
{
if(i==n)
{
if(ans==sum)
{
for(int j=0;j<n;j++)
{
cout<<a[j]<<" ";
}
exit(0);
}
}
else {
for(int j=1;j<sum;j++)
{
if(f[j]==0)
{
ans+=j*t[n - 1][i];
a[i]=j;
f[j]=1;
dfs(i+1);
f[j]=0;
ans-=j*t[n - 1][i];
}
}
}
}
int main()
{
cin>>n>>sum;
dfs(0);
return 0;
}
数据:5 39,
这个代码结果是3 2 1 4 6,
正确结果是4 1 3 2 5
但是3 2 1 4 6的字典序小于4 1 3 2 5,求助