poj 3187(next_permutation)

#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
int yh[15][15];
void init(){
    int i,j;
    for(i=1;i<=10;i++){
        yh[i][1] = 1;
        yh[i][i] = 1;
    }
    for(i=1;i<=10;i++){
        for(j=2;j<i;j++){
            yh[i][j] = yh[i-1][j-1]+yh[i-1][j];
        }
    }
}
int main(){
    init();
    int n,target,i,data[11],sum;
    scanf("%d%d",&n,&target);
    for(i=1;i<=n;i++){
        data[i] = i;
    }
    do{
        sum = 0;
        for(i=1;i<=n;i++){
            sum += data[i]*yh[n][i];
        }
        if(sum==target){
            break;
        }
    }while(next_permutation(data+1,data+1+n));
    for(i=1;i<n;i++){
        printf("%d ",data[i]);
    }
    printf("%d\n",data[n]);
    return 0;
}

 

posted @ 2021-08-16 19:59  智人心  阅读(23)  评论(0)    收藏  举报