P1118

系数就是杨辉三角,然后搜一下就行了

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

#define INF 0x3f3f3f3
using namespace std;
typedef long long LL;
int a[15][15],ans[15],vis[15];
int N,tmp;
bool V;
void dfs(int x,int sum)
{
    if(sum>tmp)return ;


    if(x==N)
    {
        if(sum==tmp)
        {
            V=true;
            for(int i=0;i1;i++)printf("%d ",ans[i]);
            printf("%d\n",ans[N-1]);
        }
        return ;
    }


    for(int i=1;i<=N;i++)
    {
        if(!vis[i]&&!V)
        {
            vis[i]=1;

            ans[x]=i;
            dfs(x+1,sum+i*a[N][x+1]);

            vis[i]=0;
        }
    }
}
int main()
{



    a[1][1]=a[2][1]=a[2][2]=1;
    for(int i=3;i<=12;i++)
    {
        a[i][1]=a[i][i]=1;
        for(int j=2;j1][j]+a[i-1][j-1];
    }



    scanf("%d%d",&N,&tmp);
    dfs(0,0);
    return 0;
}

你可能感兴趣的:(dfs)