第9个点TLE。
代码:
#include<bits/stdc++.h>
using namespace std;
int n,m,a[15][15],f[15],ans[15],len=0,flag=0;
bool check(){
int sum=0;
for(int i=1;i<=n;i++){
sum+=ans[i]*a[n][i];
}
return sum==m;
}
void dfs(int x){
if(x>n){
if(check()){
flag=1;
for(int i=1;i<=n;i++){
printf("%d ",ans[i]);
}
}
}
if(flag) return;
for(int i=1;i<=n;i++){
if(f[i]==0) continue;
ans[++len]=f[i],f[i]=0;
dfs(x+1);
len--,f[i]=i;
}
}
int main(){
scanf("%d%d",&n,&m);
a[1][1]=1;
for(int i=1;i<=n;i++){
f[i]=i;
}
for(int i=2;i<=n;i++){
a[i][1]=a[i][i]=1;
for(int j=2;j<i;j++){
a[i][j]=a[i-1][j-1]+a[i-1][j];
}
}
dfs(1);
return 0;
}